selenium webdriver 学习总结-Selenium 控制测试流(五)
来源:互联网 发布:淘宝改差评话术 编辑:程序博客网 时间:2024/06/06 17:11
一、同步测试流
1、隐式等待(不常用)
此等待方式是在查找元素时,元素没有立即出现,将等待指定时间后再去查找DOM,默认为0,一旦设置后,将存在webDriver对象的生命周期中
示例:driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
此方法表示如果查找的元素没有立即出现,将等待10s后再去查找DOM,如果元素10s后还不存在,则抛出异常
2、显示等待(常用)
相比隐式等待,此方法效率较高,当指定元素没有立即出现时,它会在指定时间范围内,500ms进行一次查找,超出指定时间,则抛出异常
WebDriverWait 和 ExpectedConditions 类执行显示等待
ExpectedConditions类提供了很多预定义好的条件来等待,下面介绍几个比较常用的条件
a. presenceOfElementsLocatedBy(By locator)
此条件是检查某个元素出现在dom中,示例如下:
WebDriverWait wait = new WebDriverWait(driver,10);
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("hello")));
该示例是在检查id为hello的元素是否存在,如果存在返回这个元素,返回值有两种,一是boolean值,二是WebElement对象
b .titleContains(java.lang.String title)
WebDriverWait wait = new WebDriverWait(driver,10);
Boolean flag = wait.until(ExpectedConditions.titleContains("hello"));
该示例是在检查当前页面标题是否包含hello,返回boolean值
c. visibilityOfElementLocated(By locator)
同上操作,返回值为WebElement对象
3、自定义条件等待(常用)
WebDriverWait wait = new WebDriverWait(driver,5);
WebElement hello = wait.until(
new ExpectedCondition(){
public WebElement apply(WebDriver driver){
return driver.findElement(By.cssSelector("#username"));
}
}
);
二、检查元素的状态
WebElement类提供了以下方法帮助我们来检查某元素当前状态
1、isEnabled()检查元素是否启用
2、isSelected()检查元素是否被选中(单选框,多选框,下拉框)
3、isDisplay()检查元素是否可见
三、处理弹出窗口
1、通过窗口句柄来识别弹出窗口
String parentWindow = driver.getWindowHandle();//将父窗口句柄保存在parentWindow变量中
driver.getElementById("popUp").click();//单击popUp按钮,弹出新窗口
Set allHandle = driver.getWindowHandles();//得到当前打开的所有窗口
Iterator iter = allHandle.iterator();
while(iter.hasNext()){
String temp = iter.next();
if(!temp.equals(parentWindow)){
driver.switchTo.window(temp);
}
}
2、通过页面标题来识别弹出窗口
String parentWindow = driver.getWindowHandle();//将父窗口句柄保存在parentWindow变量中
driver.getElementById("popUp").click();//单击popUp按钮,弹出新窗口
Set allHandle = driver.getWindowHandles();//得到当前打开的所有窗口
Iterator iter = allHandle.iterator();
while(iter.hasNext()){
String temp = iter.next();
if(driver.switchTo.window(temp).getTitle.equals("helloworld")){
driver.switchTo.window(temp);
}
}
3、通过页面内容来识别弹出窗口
String parentWindow = driver.getWindowHandle();//将父窗口句柄保存在parentWindow变量中
driver.getElementById("popUp").click();//单击popUp按钮,弹出新窗口
Set allHandle = driver.getWindowHandles();//得到当前打开的所有窗口
Iterator iter = allHandle.iterator();
while(iter.hasNext()){
String temp = iter.next();
driver.switchTo.window(temp);
if(driver.getPageSource().contains("helloworld")){
break;
}
}
四、处理js弹出窗口1、处理js警告框,通过webdriver提供的Alert类处理警告框
driver.findElementById("alert").click();//点击弹出警告框
Alert alertbox = driver.switchTo().alert();
alertBox.accept();
2、处理js确认框
driver.findElementById("alert").click();//点击弹出确认框
Alert alertbox = driver.switchTo().alert();
alertBox.accept();//点击确认
alertBox.dismiss();//点击取消
3、处理JS提示框
driver.findElementById("alert").click();//点击弹出确认框
Alert alertbox = driver.switchTo().alert();
alertBox.sendKeys("helloworld")//向提示框中输入“helloworld”
alertBox.accept();//点击确认
alertBox.dismiss();//点击取消
五、识别处理frame框架
1、通过id或者name处理frame框架
driver.switchTo().frame("ID");
driver.switchTo().frame("name");
driver.switchTo().defaultContent(); //回到最初的页面
2、通过index来处理frame
driver.switchTo().frame("index");
六、识别处理iframe框架
step 1:
WebElement element = driver.findElementById("iframe");
step 2:
driver.switchTo().frame(element);
- selenium webdriver 学习总结-Selenium 控制测试流(五)
- selenium webdriver 学习总结-Selenium 控制测试流(五)
- selenium webdriver 学习总结-Selenium 控制测试流(五)
- selenium webdriver 学习总结-Selenium 控制测试流_补充显示等待(五)
- selenium webdriver 学习总结-Selenium 控制测试流(五)-补充显示等待
- selenium webdriver 学习总结-Selenium 控制测试流_补充显示等待(五)
- Selenium Webdriver 学习总结-Selenium Grid & Webdriver(九)
- Selenium Webdriver 学习总结-Selenium Grid & Webdriver(九)
- Selenium Webdriver 学习总结-Selenium Grid & Webdriver(九)
- selenium webdriver 学习总结
- selenium webdriver 学习总结-Selenium API常用(四)
- selenium webdriver 学习总结-Selenium API常用(四)
- selenium webdriver 学习总结-Selenium API常用(四)
- ruby+selenium-webdriver一步一步进行自动化测试----学习总结陈述
- selenium-webdriver(python) (五)
- selenium webdriver学习(五)------------iframe的处理
- Selenium Webdriver (学习笔记)
- selenium webdriver学习(十二)------------如何利用selenium-webdriver截图
- WebViewJavascriptBridge详细使用
- 【QTP】自动关闭msgbox
- selenium webdriver 学习总结-Selenium API常用(四)
- 打印数组,里面字符串显示中文的方法!
- 第12周项目-1实现复数类中的运算符重载 2
- selenium webdriver 学习总结-Selenium 控制测试流(五)
- ArcGIS Engine加载ArcGIS Server服务
- 解决linux不能上外网的问题
- jQuery中prop()和attr()的区别
- 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案
- 开始Sencha Touch 2之旅 -- Sencha Touch 官方指南系列
- 在 Visual Studio 上更好开发 Python 的六大功能!
- PHP迭代器模式(引用SPL实现)
- 基于xmpp openfire smack开发之openfire介绍和部署[1]