如何使用Selenium测量页面下载时间

时间:2013-11-17 02:34:21

标签: python selenium selenium-webdriver

如何在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可能会在页面完成甚至开始加载之前返回控件。

事实上,在我的简短测试代码中,print语句可以在webdriver完成加载之前进一步向下打印两个或三个URL。

我知道在某些网页元素上使用显式等待可以强制执行阻止,但有没有通用的方法来执行此操作?我在大约几千个网站上测量这个,所以有一些独立于网络内容的东西会很棒。

1 个答案:

答案 0 :(得分:0)

如何确保加载所有内容的唯一方法是使用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