【问题标题】:How to calculate page load time of a website which includes the total time and not just document.ready() time? [duplicate]如何计算网站的页面加载时间,包括总时间而不仅仅是 document.ready() 时间? [复制]
【发布时间】:2018-11-28 21:07:22
【问题描述】:

我试图用 Javascript 或 Python 编写一个函数,使用 Selenium 来计算网站的页面加载时间。 document.ready() 只会给出 DOM 加载时间,但可能有一些 AJAX 调用无法使用 document.ready() 检测到。

chrome 网上商店中甚至还有一个名为“页面加载时间”的扩展程序,它会根据我的要求计算总时间。如何复制相同类型的功能?

【问题讨论】:

    标签: javascript python jquery selenium document-ready


    【解决方案1】:

    你可以像下面这样使用load

    $(window).load(function() {
        //code in here
    });
    

    在此处查看jQuery docs。此外,可以在here 找到另一个向您展示如何设置页面计时器的答案。

    【讨论】:

    • 感谢@PaulFitzgerald 的回复,但我如何使用window.load 获得实际时间?我需要加载网站的总时间,现在这个时间指标将在我的代码中的其他地方使用。
    【解决方案2】:

    driver.execute_script("return $.active == 0") 应该可以帮助您。

    $.active 返回活动 Ajax 请求的数量。 Link

    【讨论】:

    • 嘿,感谢@sahil 的回复,但是如果在网站的某些 iframe 中执行 ajax 请求,这会起作用吗? return $.active == 0如果我没记错的话会在网页顶部执行。
    【解决方案3】:

    你可以用 selenium 和execute_script 方法试试,我们将从window.performance.timing 获取信息,它会返回毫秒,但是如果我们将它除以1000,我们将得到加载页面的秒数。

    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.get("https://example.com")
    
    load_time = driver.execute_script(
            """
            var loadTime = ((window.performance.timing.domComplete- window.performance.timing.navigationStart)/1000)+" sec.";
            return loadTime;
            """
            )
    
    print(load_time)
    

    输出

    # something like this
    0.803 sec.
    

    【讨论】:

    • 感谢@zimdero,但如果我没记错的话,这将在页面的 DOM 上运行。我不仅需要计算加载 DOM 所需的时间,还需要计算完成 AJAX 调用所需的时间,即使它们位于页面的某个 iframe 内。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多