use*_*534 18 selenium webdriver selenium-webdriver
我使用下面的代码来检查我的网页上的元素
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
catch (Exception e)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
如果特定区域出现在结果中,我需要检查我的程序,如下所示
isElementPresent(By.xpath(".//*[@id='header']")));
Run Code Online (Sandbox Code Playgroud)
如果存在,则此功能快速完成,但如果不存在,则运行很长时间.
有人可以帮我解决这个问题,以便快速执行此检查吗?
San*_*rma 39
在这里你缺少一些东西,这就是它等待的原因如果没有元素.findElement将等待一个元素隐式指定的时间.所以需要在该方法中将该时间设置为零.
isElementPresent(WebDriver driver, By by) {
driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
} finally {
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
}
Run Code Online (Sandbox Code Playgroud)
这里有四件重要的事情.为了:
将implicity_wait设置为0,以便WebDriver不会隐式等待.
找到元素时返回True.
捕获NoSuchElementException并在发现元素不存在时返回False,而不是使用异常停止测试.
在操作完成后将implicitly_wait设置回30,以便WebDriver将来会隐式等待.
| 归档时间: |
|
| 查看次数: |
12882 次 |
| 最近记录: |