![](/img/trans.png)
[英]Selenium WebDriver: How to wait for iFrames to load completely?
[英]How to wait for page to load completely using JavaScript in Selenium
我正在嘗試讓頁面在執行操作之前完全加載。 我不想在瀏覽器選項卡上的加載圓圈仍在轉動時開始操作。 我的等待 ajax 功能在某些情況下不起作用,尤其是對於新頁面加載。 我的函數是基於 JQuery 的:
JavascriptExecutor jsDriver = (JavascriptExecutor) webDriver;
boolean stillRunningAjax = (Boolean) jsDriver
.executeScript("return window.jQuery != undefined && jQuery.active != 0");
return !stillRunningAjax;
如果這是錯誤的,請再次運行它。
但是對於頁面加載,在它返回 true 之后,瀏覽器仍在加載(加載循環正在轉動)幾秒鍾(有時更多)。
我已經嘗試過 implicitlyWait 但它與我的函數同時停止了該函數。
有人說硒沒有完整的解決方案。 但應該有。 也許一個包含 JavaScript 的解決方案,任何東西。
使用 javascript 等待頁面加載:
void waitForLoad(WebDriver driver) {
ExpectedCondition<Boolean> pageLoadCondition = new
ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
}
};
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(pageLoadCondition);
}
如果您正在等待 ajax 在頁面上顯示元素,則可以等待元素本身。
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.