我想等待页面完全加载。我知道我可以通过等待加载页面元素来做到这一点。
但是我想要更通用的东西,我假设Favicon可用于确定页面是否已完全加载。
如何使用Selenium Webdriver确定FavIcon是否已加载到页面中?
“我知道它只是HTML源代码中的另一个元素。但如果你在任何网页上查看页面加载,Favicon将是最后一个加载。如果有办法等到Favicon是加载到网页上,我们可以使用它作为waitforpagetoload来测试整个应用程序(Favicon在Web应用程序的所有网页上都是一样的。)
答案 0 :(得分:1)
我不确定等待图标是否是一个好主意。不同的应用程序使用不同的技术, IMO可能没有适用于所有Web应用程序的通用等待。以下是我用于“我的”应用程序的内容。这给了你一个想法。您需要构建适合“您的”应用程序的内容。
public void my_generic_wait_for_page_load() {
final WebDriverWait wait = new WebDriverWait(this.getDriver(), 300);
final JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
final ExpectedCondition<Boolean> jQueryActive_toBeZero = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
try {
return ((Long) jsExecutor
.executeScript("return jQuery.active") == 0) ? true
: false;
} catch (final WebDriverException e) {
log.warn("It looks like jQuery is not available on the page, skipping the jQuery wait, check stack trace for details",e);
return true; //skip the wait
}
}
};
final ExpectedCondition<Boolean> document_readyState_toBeComplete = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return jsExecutor.executeScript("return document.readyState")
.toString().equals("complete") ? true : false;
}
};
wait.until(jQueryActive_toBeZero);
wait.until(document_readyState_toBeComplete);
}