我正在努力准确地检测我正在工作的公司网站上的页面加载时间。我决定尝试使用python和selenium来实现这一点,这样我就可以实现自动化。然而,由于无法获得可靠的页面加载时间,我似乎遇到了麻烦。罪魁祸首似乎是这样一个事实:在3秒ajax调用完成之前,我们不认为页面“已加载”。然而,Selenium会考虑在DOM完全加载之前加载的页面,这不是我们要寻找的加载时间。我在网上读到,我可以使用WebDriverWait函数轮询ajax执行后出现的元素。我应该可以这样做,因为在ajax调用之后创建了新元素,但是,我在网上注意到它的轮询频率是500毫秒,这对我来说太大了。我试图非常准确地确定页面加载时间,500毫秒是一个很大的误差范围。我在网上找不到任何关于如何在python中更改默认轮询频率的信息,只是Java中类似的东西我无法解读。如果你知道如何减少轮询频率很多,或有一个更好的想法,如何获得准确的页面加载时间与Ajax的误差幅度约50毫秒,请让我知道。非常感谢。你知道吗
在我的一个项目中,我写了这样一个函数:
以后像这样使用:
其中
login_btn
是Selenium对象,obj_has_gone_stale
是尝试查找对象并捕获StaleElementReferenceException
的函数。看起来是这样的:使用这种方法,您可以随时在
wait_for
内设置time.sleep()
。但别忘了考虑obj.find_elements_by_id('doesnt-matter')
也可能需要一些时间来执行。我写的硒内置的wait for presence
对于obj
必须消失而不出现的场景是否更好,这一点不确定。但是你可以写一些类似于obj_has_gone_stale
但是obj_has_rendered
的东西。它基本上必须尝试访问obj
,并查看它是否已在页面上呈现并返回true。然后将函数传递给wait_for
。你知道吗相关问题 更多 >
编程相关推荐