【问题标题】:document.readyState returns 'complete' even when the page is still visibly loadingdocument.readyState 即使在页面仍然可见加载时也会返回“完成”
【发布时间】:2018-03-29 14:12:08
【问题描述】:

我已使用以下代码检查页面是否已加载:

JavascriptExecutor js = (JavascriptExecutor)Driver;
pageLoadStatus = js.executeScript("return document.readyState").toString();

document.readyState 会返回“完成”,即使页面仍处于可见加载状态。

【问题讨论】:

  • 一个更可靠的策略是等待您想要点击或以其他方式交互的元素(存在或可见性)。它消除了脚本/代码中的猜测和错误。这样,页面可以部分加载,您仍然可以阅读内容或单击元素。

标签: javascript java selenium


【解决方案1】:

您可能会看到在后台工作的 ajax 元素。如果我需要知道的不仅仅是页面已完成加载,我使用以下内容:

public void waitForJQueryToBeActive() {

    Boolean isJqueryUsed = (Boolean) ((JavascriptExecutor) driver)
            .executeScript("return (typeof(jQuery) != 'undefined')");

    if (isJqueryUsed) {
        while (true) {
            // JavaScript test to verify jQuery is active or not
            Boolean ajaxIsComplete = (Boolean) (((JavascriptExecutor) driver)
                    .executeScript("return jQuery.active == 0"));
            if (ajaxIsComplete)
                break;
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
            }
        }
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多