【发布时间】:2017-11-30 14:04:27
【问题描述】:
我知道,就等待不在DOM 中的网络元素而言,最有效的是流畅的等待。所以我的问题是:
有没有办法处理和捕获 NoSuchElementException 或由于元素不存在而导致流畅等待可能引发的任何异常?
我需要一个布尔方法,无论是否找到该元素,它都会给我结果。
这种方法在网络上很流行。
public void waitForElement(WebDriver driver, final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(60, TimeUnit.SECONDS)
.pollingEvery(2, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
});
}
我需要的是,**.ignoring(NoSuchElementException.class);** 不会被忽略。一旦异常被捕获,它将返回 FALSE。另一方面,当找到一个元素时,它将返回 TRUE。
【问题讨论】:
-
通过要求忽略
.ignoring(NoSuchElementException.class);,您正在破坏FluentWait的基本逻辑。我认为适合你的是WebDriverWait -
我可以使用 WebDriver 等待轮询吗?
-
当然可以
标签: java selenium-webdriver selenium-chromedriver nosuchelementexception fluentwait