【问题标题】:How to measure page download time with Selenium如何使用 Selenium 测量页面下载时间
【发布时间】:2013-11-17 02:34:21
【问题描述】:

如何在 selenium (Python) 中测量网站的页面下载+渲染时间?目前我有类似的东西

... # set up web driver and loop through a list of domain names

print currDomainName
start = datetime.now()
browser.get(currDomainName)
end = datetime.now()

... # do something with the time diff

但它并不完全有效,因为 get() 在页面渲染完成之前不能保证阻塞。它的official doc 也说

在某些情况下,WebDriver 可能会在页面完成甚至开始加载之前返回控制权。

事实上,在我的简短测试代码中,打印语句实际上可以在 webdriver 完成加载之前打印两个或三个 url。

我知道在某些网页元素上使用显式等待可以强制执行阻止,但是有没有通用的方法来做到这一点?我在大约几千个网站上对此进行了衡量,因此拥有独立于网络内容的内容会很棒。

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    确保所有内容都已加载的唯一方法是使用ExplicitWait。缺点是您必须知道哪个元素会减慢每个特定页面的渲染速度,但这是保持测量精确的唯一方法。

    start = datetime.now()
    browser.get(currDomainName)
    WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, 
       "reallyHugeImageId")))
    end = datetime.now()
    

    请注意,time.sleep() 会破坏您的措施,因为您总是会等待准确的时间。因此,唯一的方法是调查哪些元素尚未呈现,即使 WebDriver 返回并通过 ExpectedCondition 等待它们。

    【讨论】:

    • 所以基本上没有可靠的方法来衡量这个?
    • 恐怕不是 - 我也不相信 Selenium 是适合此类测试的工具,Selenium 通常比用户浏览器慢,而且这种性能会受到许多参数(服务器负载、数量在线用户数,机器速度等...您无法通过 Selenium 模拟)所以我绝对不会在这里依赖它...
    • 嗯,是的,我是这么想的。您是否偶然知道用于此类测量的更好工具(仅页面加载时间,仅此而已)? Selenium 是我发现的唯一一个拥有大量用户并且看起来很有前途的产品
    • @PetrMensik 你是什么意思 Selenium 比浏览器慢? Selenium 使用实际的浏览器。 Selenium 可能会增加一些微不足道的开销,但还有什么工具比使用真实用户会使用的工具更好的工具呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多