簡體   English   中英

如何在 Selenium 中使用 JavaScript 等待頁面完全加載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM