即使页面仍然明显加载,document.readyState也会返回'complete'

时间:2018-03-29 14:12:09

标签: javascript java selenium

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

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

document.readyState即使页面仍然明显加载也会返回“完成”。

1 个答案:

答案 0 :(得分:0)

您可能会看到的是在后台工作的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) {
            }
        }
    }

}