TA的每日心情 | 开心 2024-10-4 10:34 |
---|
签到天数: 1208 天 连续签到: 1 天 [LV.10]测试总司令
|
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;
} |
|