51Testing软件测试论坛
标题:
【佳乐Selenium】DAY-2 iframe特殊处理和等待JS页面
[打印本页]
作者:
赵佳乐SMILE
时间:
2015-3-3 15:56
标题:
【佳乐Selenium】DAY-2 iframe特殊处理和等待JS页面
DAY-2
写了两个超链接的 然后就遇到了问题 xpath无法定位
发现我们的页面都是JS里面嵌套其他JS生成的
一、当xpath无法定位时
查看是否有iframe
如果有iframe时 要先跳进iframe 然后在跳出
定位到页面中frame标签:
如果一个页面是一个html元素, 只有一个head, 一个body, 那么使用WebDriver.FindElement()查找页面中的任何一个元素都没有问题。但是,由于页面中<frame ... 的使用,使得一个原始的html页面中可以包含多个子html页面, 在这种情况下,使用WebDriver.FindElement()查找页面某个元素,如果元素是属于的html且非frame下的, 那么没有问题。若该元素是属于某个子的<frame ...下的,获得页面元素会失败的。所以也需要用到switchTo。
代码如下:
driver.switchTo().frame(driver.findElement(By.tagName("frame")));
/*在frame中进行一系列操作后....*/
driver.switchTo().defaultContent(); //返回之前的
二、等待JS生成
方法一
Tread.sleep(1000);
方法二 设置显式等待时长(一般针对某一个元素):
new WebDriverWait(driver,5).until(new ExpectedCondition<Boolean>(){
@Override
public Boolean apply(WebDriver d) {
if (d.findElement(By.xpath("/button[1]")).isDisplayed()) {
return true;
} else {
return false;
}
}
});
driver.findElement(By.xpath("/button[1]")).click();
方法三
public boolean isExistWindow(String windowTitle){
boolean flag = false;
Set<String> handles = driver.getWindowHandles();
for (String tmp : handles) {
//跳入windows
driver.switchTo().window(tmp);
if (driver.getTitle().equals(windowTitle)){
flag = true;
break;
}
}
return flag;
}
作者:
dls0225
时间:
2015-3-9 15:52
感谢分享。
作者:
Miss_love
时间:
2015-3-30 20:34
有人指导进步很快呀
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2