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