Selenium 等待 Ajax 内容加载 - 通用方法 [英] Selenium wait for Ajax content to load - universal approach
本文介绍了Selenium 等待 Ajax 内容加载 - 通用方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Selenium 是否有一种通用的方法可以等待所有 ajax 内容加载完毕?(不绑定到特定网站 - 所以它适用于每个 ajax 网站)
Is there a universal approach for Selenium to wait till all ajax content has loaded? (not tied to a specific website - so it works for every ajax website)
推荐答案
您需要等待 Javascript 和 jQuery 完成加载.执行 Javascript 来检查 jQuery.active
是否为 0
和 document.readyState
是否为 complete
,这意味着 JS 和jQuery 加载完成.
You need to wait for Javascript and jQuery to finish loading. Execute Javascript to check if jQuery.active
is 0
and document.readyState
is complete
, which means the JS and jQuery load is complete.
public boolean waitForJSandJQueryToLoad() {
WebDriverWait wait = new WebDriverWait(driver, 30);
// wait for jQuery to load
ExpectedCondition<Boolean> jQueryLoad = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
try {
return ((Long)((JavascriptExecutor)getDriver()).executeScript("return jQuery.active") == 0);
}
catch (Exception e) {
// no jQuery present
return true;
}
}
};
// wait for Javascript to load
ExpectedCondition<Boolean> jsLoad = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor)getDriver()).executeScript("return document.readyState")
.toString().equals("complete");
}
};
return wait.until(jQueryLoad) && wait.until(jsLoad);
}
这篇关于Selenium 等待 Ajax 内容加载 - 通用方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文