我每隔几秒钟就会多次连接到一个网站,有时该网站只是进入巨大的加载阶段,大约需要5分钟才能停止加载。当它最终停止时,它将引发预期的ElementNotFoundException
,然后我捕获并从最后一点重新开始该过程。但是,我希望能够检测到此加载阶段并尽快处理它,而不是等待5分钟才能结束。我尝试使用一种FluentWait
实现和一种WebDriverWait
实现,但到目前为止都没有效果。这是我尝试过的两个实现:
FluentWait:
private static WebElement fluentWait(final By locator,WebDriver driver) {
Wait<WebDriver> wait = new FluentWait<>(driver)
.withTimeout(10,TimeUnit.SECONDS)
.pollingEvery(2,TimeUnit.SECONDS);
//.ignoring(NoSuchElementException.class);
return wait.until((Function<WebDriver,WebElement>) driver1 -> {
assert driver1 != null;
return driver1.findElement(locator);
});
}
WebDriverWait:
new WebDriverWait(driver,5).until(ExpectedConditions.presenceOfElementLocated(new By.ByCssSelector(someSelector)));
P.S:我正在使用Selenium Webdriver,特别是ChromeDriver()
。这是网站进入巨大加载阶段时的外观图->