Navigation 对象提供的方法:
方法 描述navigate.to(url) 跳转到指定url,和 webdriver 使用 get 方法是一样的。
navigate.refresh() 刷新当前页面。
navigate.back() 浏览器回退操作。
navigate.forward() 浏览器前进操作。
第九章 模拟鼠标键盘操作 9.1.模拟鼠标
在WebDriver中,关于鼠标的操作我们可以通过 Actions 类来模拟鼠标右击、双击、悬停、拖动等操作。
Actions 类中鼠标操作常用方法:
方法 描述contextClick() 鼠标右击
clickAndHold(WebElement) 点击并控制(模拟悬停)
doubleClick(WebElement) 鼠标双击
dragAndDrop(webElement1,webElement2) 鼠标拖动
moveToElement(WebElement) 鼠标移动到某个元素上
perform() 执行所有Actions中存储的行为
click() 鼠标单击(左击)
示例:百度首页设置悬停下拉菜单
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.interactions.Actions; public class MouseDemo { public static void main(String[] args) { WebDriver driver = new ChromeDriver(); driver.get("https://www.baidu.com/"); // 定位元素 WebElement search_setting = driver.findElement(By.linkText("设置")); // 创建actions对象 Actions action = new Actions(driver); // 模拟鼠标悬停 action.clickAndHold(search_setting).perform(); driver.quit(); } }其他方法使用:
Actions action = new Actions(driver); // 鼠标右键点击指定的元素 action.contextClick(driver.findElement(By.id("element"))).perform(); // 鼠标双击指定的元素 action.doubleClick(driver.findElement(By.id("element"))).perform(); // 鼠标移到到指定元素上 action.moveToElement(driver.findElement(By.id("element"))).perform(); // 鼠标拖拽动作, 将 source 元素拖放到 target 元素的位置。 WebElement source = driver.findElement(By.name("element")); WebElement target = driver.findElement(By.name("element")); action.dragAndDrop(source,target).perform(); // 释放鼠标 action.release().perform(); 9.2.模拟键盘在 selenium 中有个 Keys() 类(枚举类),提供了几乎键盘上所有按键的方法,在使用的过程中,我们可以通过 sendKeys() 方法来模拟键盘的输入,除此之外,我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A、 Ctrl+C 等。
以下为常用的键盘操作:
sendKeys(Keys.BACK_SPACE) 回格键(BackSpace)
sendKeys(Keys.SPACE) 空格键 (Space)
sendKeys(Keys.TAB) 制表键 (Tab)
sendKeys(Keys.ESCAPE) 回退键(Esc)
sendKeys(Keys.ENTER) 回车键(Enter)
sendKeys(Keys.CONTROL,'a') 全选(Ctrl+A)
sendKeys(Keys.CONTROL,'c') 复制(Ctrl+C)
sendKeys(Keys.CONTROL,'x') 剪切(Ctrl+X)
sendKeys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
sendKeys(Keys.F1) 键盘 F1
……
sendKeys(Keys.F12) 键盘 F12
在使用键盘按键方法前,我们需要先导入 keys 类。
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.By; import org.openqa.selenium.Keys; public class Keyboard { public static void main(String[] args)throws InterruptedException { WebDriver driver = new ChromeDriver(); driver.get("https://www.baidu.com"); // 定位到对应的元素 WebElement input = driver.findElement(By.id("kw")); //输入框输入内容 input.sendKeys("seleniumm"); Thread.sleep(2000); //删除多输入的一个 m input.sendKeys(Keys.BACK_SPACE); Thread.sleep(2000); //输入空格键+“教程” input.sendKeys(Keys.SPACE); input.sendKeys("教程"); Thread.sleep(2000); //ctrl+a 全选输入框内容 input.sendKeys(Keys.CONTROL,"a"); Thread.sleep(2000); //ctrl+x 剪切输入框内容 input.sendKeys(Keys.CONTROL,"x"); Thread.sleep(2000); //ctrl+v 粘贴内容到输入框 input.sendKeys(Keys.CONTROL,"v"); Thread.sleep(2000); //通过回车键盘来代替点击操作 input.sendKeys(Keys.ENTER); Thread.sleep(2000); driver.quit(); } }