您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页selenium webdriver 学习总结-Selenium 控制测试流(五)

selenium webdriver 学习总结-Selenium 控制测试流(五)

来源:步遥情感网

测试技术交流群:161204772

悦分享测试联盟:136924235

悦分享主页:http://www.bjhxcc.com/special/2013/0822/yfx.htm

一、同步测试流

1、隐式等待(不常用)

此等待方式是在查找元素时,元素没有立即出现,将等待指定时间后再去查找DOM,默认为0,一旦设置后,将存在webDriver对象的生命周期中

示例:driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);

此方法表示如果查找的元素没有立即出现,将等待10s后再去查找DOM,如果元素10s后还不存在,则抛出异常


2、显示等待(常用)

相比隐式等待,此方法效率较高,当指定元素没有立即出现时,它会在指定时间范围内,500ms进行一次查找,超出指定时间,则抛出异常

WebDriverWait 和 ExpectedConditions 类执行显示等待

ExpectedConditions类提供了很多预定义好的条件来等待,下面介绍几个比较常用的条件

a. ( locator)

此条件是检查某个元素出现在dom中,示例如下:

WebDriverWait wait = new WebDriverWait(driver,10);
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("hello")));

该示例是在检查id为hello的元素是否存在,如果存在返回这个元素,返回值有两种,一是boolean值,二是WebElement对象

b .(java.lang.String title)

WebDriverWait wait = new WebDriverWait(driver,10);
Boolean flag = wait.until(ExpectedConditions.titleContains("hello"));

        该示例是在检查当前页面标题是否包含hello,返回boolean值

c. ( locator)

同上操作,返回值为WebElement对象


3、自定义条件等待(常用)

WebDriverWait wait = new WebDriverWait(driver,5);

WebElement hello = wait.until(

   new ExpectedCondition<WebElement>(){

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<String> allHandle = driver.getWindowHandles();//得到当前打开的所有窗口

Iterator<String> 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<String> allHandle = driver.getWindowHandles();//得到当前打开的所有窗口

Iterator<String> 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<String> allHandle = driver.getWindowHandles();//得到当前打开的所有窗口

Iterator<String> 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);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务