我在尝试在我正在处理的公司网站上准确检测页面加载时间。我决定尝试使用python和selenium来做到这一点,这样我就可以实现自动化。不过,由于我无法获得可靠的网页加载时间,因此我似乎遇到了困难。罪魁祸首似乎是这样的事实,我们不认为页面“加载”,直到约3秒ajax呼叫结束。然而,Selenium认为在DOM完全加载之前加载页面,这不是我们正在寻找的加载时间。我在线阅读过,我可以使用WebDriverWait函数轮询ajax执行后出现的元素。我应该能够做到这一点,因为在ajax调用之后创建了新的元素,但是,我在网上注意到它的轮询频率为500ms,这对我来说太大了。我试图非常准确地确定页面加载时间,500毫秒是一个很大的误差。我找不到任何关于如何更改python中的默认轮询频率的任何内容,只是Java中类似的东西,我不能解密。如果您知道如何大幅降低轮询频率,或者更好地了解如何使用Ajax获得准确的页面加载时间,误差范围约为50ms,请让我知道。谢谢。在Python中使用Selenium精确检测带有AJAX加载时间的页面
1
A
回答
0
在我的项目之一,我写了这样的功能:
def wait_for(condition_function, *args):
start_time = time.time()
while time.time() < start_time + 10:
if condition_function(*args):
return True
else:
time.sleep(0.1)
raise TimeoutException(
'Timeout waiting for {}'.format(condition_function.__name__)
)
以后使用它像这样:
wait_for(obj_has_gone_stale, login_btn)
其中login_btn
是硒对象,obj_has_gone_stale
是试图给一个函数找到对象并捕获一个StaleElementReferenceException
。它看起来像这样:
def obj_has_gone_stale(obj):
try:
# poll the link with an arbitrary call
obj.find_elements_by_id('doesnt-matter')
return False
except StaleElementReferenceException:
return True
用这种方法你可以设置time.sleep()
内wait_for
你想要的任何时间。但不要忘记,obj.find_elements_by_id('doesnt-matter')
也可能需要一些时间来执行。不知道是否Selenium内置wait for presence
好多了,因为我写了wait_for
,因为obj
必须消失而不会出现。但是你可以写一些类似于obj_has_gone_stale
但是obj_has_rendered
的东西。它基本上必须尝试访问obj
并查看它是否已在页面上呈现并返回true。然后将该功能传递给wait_for
。
相关问题
- 1. 检测页面加载 - ajax
- 2. 在硒中测试页面加载时间的正确方法?
- 3. 如何检测Firefox何时使用Python完成加载页面?
- 4. Selenium中的时间页面加载时间
- 5. 显示用ajax加载页面时的加载时间
- 6. Selenium中的页面加载超时
- 7. 带有外部页面的jQuery ajax加载页面
- 8. 如何检测页面是否完全加载到Selenium中?
- 9. 当页面加载时也使用AJAX?
- 10. cefSharp整个页面加载时检测
- 11. Selenium等待页面加载python
- 12. 测量ASP.NET页面加载时间
- 13. Selenium(java):页面在测试运行时不加载css和js
- 14. 如何确定何时完成页面加载以测量加载时间
- 15. 加载页面时,如何在jquery中发送带有ajax的发布数据?
- 16. 有没有可能使用Selenium IDE测试页面访问的等待时间?
- 17. 预测在javascript中完全加载页面的时间
- 18. 检测一个页面在firefox插件中完成加载的时间
- 19. 在ajax加载的页面中使用ajax
- 20. FPGA测量精确时间
- 21. 使用JavaScript测量页面加载时间
- 22. Selenium python:如何在头部/标题加载时停止页面加载?
- 23. Selenium python:如何在某些元素加载时停止页面加载?
- 24. 使用jQuery加载页面的Ajax
- 25. 使用Selenium WebDrivers加载页面时的屏幕截图
- 26. 同时页面加载和ajax调用
- 27. Ajax在页面加载时触发
- 28. Selenium webdriver 2.0中的页面加载 - java
- 29. 在单页面网站中使用jquery ajax加载页面时显示progressbar
- 30. AJAX加载页面