浏览器常规操作:
- 打开网页:
// 打开某个网页,http不可少
driver.get(“http://www.baidu.com”);
// 打开某个网页,等同于上面的get方法
driver.navigate().to(“http://www.google.com”); - 浏览器后退
driver.navigate().back(); - 浏览器前进
driver.navigate().forward(); - 浏览器刷新
- driver.navigate().refresh();
- 浏览器最大化
driver.manage().window().maximize(); - 设置浏览器大小
Dimension dimension = new Dimension(900, 800);
driver.manage().window().setSize(dimension); - 获取当前页面URL
driver.getCurrentUrl(); - 获取当前页面Title
driver.getTitle();
元素操作:
- 点击:click()
- 文本框输入文本:sendkeys()
- 清空文本框:clear()
- 获取文本:getText()
- 获取title:getTitle()
- 判断元素是否展示:isDisplayed()
- 判断选择框是否选取:isSelected()
- 判断输入框是否为可输入:isEnabled()
- 截图
代码例子:
File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(screenShotFile, new File("D:/a.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
- Alert的处理(弹窗)
Alert alert = driver.switchTo().alert();
alert.accept();
- Confirm的处理
Alert alert = driver.switchTo().alert();
//确定按钮
alert.accept();
//取消按钮
alert.dismiss();
- Prompt的处理
Alert alert = driver.switchTo().alert();
alert.sendKeys("输入");
alert.accept();
- iFrame的处理
driver.switchTo().frame("nameOrId");
driver.findElement(By.id("id")).sendKeys("输入");
//控制权恢复默认
driver.switchTo().defaultContent();
-
下拉框的处理
三种处理方式:- selectByIndex() 根据索引来选取,从0开始
- selectByValue() 根据属性value的属性值来选取
- selectByVisibleText()根据标签之间的Text值,也就是页面显示的
-
多窗口的处理
String handle = driver.getWindowHandle();
for (String handles : driver.getWindowHandles()) {
if (handles.equals(handle)) {
continue;
}
driver.switchTo().window(handles);
}
- 元素等待的处理
- 线程等待:Thread.sleep(xxxx)
- 全局等待:driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS)
- 显示等待:new WebDriverWait(driver, 30).until(ExpectedConditions.presenceOfElementLocated(By))
- Actions类
平时我们在做自动化过程中可能需要模拟鼠标、键盘等的一些行为,例如鼠标单击,双击,右键,而且很多web 应用可能存在快捷组合键等等。那么可以用WebDriver中提供了Actions类来处理这类需求,更复杂的键盘鼠标处理我们可以通过Java提供的Robot类解决。
Actions builder = new Actions(webdriver1);
//右键
builder.contextClick().perform();
//双击
builder.doubleClick().perform();
//停留在元素上
builder.moveToElement(element).perform();
//拖动到固定坐标
//builder.dragAndDropBy(element, xOffset, yOffset).perform();
//把元素拖动另一个元素上
builder.clickAndHold(i).moveToElement(one element).release(other element).perform();
//下拉框多选
builder.keyDown(Keys.SHIFT).click(elements.get(0)).click(elements.get(2)).build().perform();
- Robot类
- 按住某个按键
keyPress(KeyEvent.VK_S) //S键 - 松开某个按键
keyRelease()