在代理后面设置 Selenium 页面加载超时
设置浏览器导航超时,并将其与元素等待、脚本超时和 WebDriver 控制连接区分开来。
from selenium.common.exceptions import TimeoutException
driver.set_page_load_timeout(30)
try:
driver.get('https://example.com/')
except TimeoutException:
print('The navigation did not finish within its page-load timeout.')
在导航之前,在已配置目标代理的 driver 上设置它。Python 的方法以秒为单位。
所选的页面加载策略决定了何时算作完成:normal 会等待文档完全就绪,而 eager 使用更早的状态。两者都不会等待脚本将来创建的每一个请求。
| 限制 | 所约束的工作 |
|---|---|
| 页面加载超时 | 导航达到其选定的完成状态 |
| 隐式等待 | 元素定位的尝试 |
| 脚本超时 | 适用的异步脚本执行 |
| 运行器的 WebDriver 传输超时 | 从测试脚本到 driver 的独立控制请求 |
如果该控制连接挂起,或使用了不合适的代理,浏览器的导航预算无法解决。多步骤工作流还需要整体的作业预算;监督型运行器可以单独于单次导航发现进度停滞。
把报告出来的计时器或传输保留在失败记录中。仅有导航超时无法区分代理设置、目标端延迟和页面自身的加载行为。