您的位置:首页 > 其它

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

2013-08-29 19:03 423 查看
测试技术交流群: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.
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<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来处理framedriver.switchTo().frame("index");五、识别处理iframe框架step 1:WebElement element = driver.findElementById("iframe");step 2:driver.switchTo().frame(element);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: