赵佳乐SMILE 发表于 2015-3-3 15:56:03

【佳乐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")).isDisplayed()) {
return true;
} else {
return false;
}
}
});

driver.findElement(By.xpath("/button")).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:17

感谢分享。

Miss_love 发表于 2015-3-30 20:34:10

有人指导进步很快呀
页: [1]
查看完整版本: 【佳乐Selenium】DAY-2 iframe特殊处理和等待JS页面