python - Selenium WebDriverWait 不抛出超时异常
问题描述
我正在使用硒来抓取网页。网络类似于谷歌地图,我需要输入一个开始位置和结束位置,然后得到结果。网页加载缓慢,有时会停止响应。所以我尝试使用 WebDriverWait 来捕获超时异常并重新启动网页。
然而,实际上如果网页停止响应,webDriverWait 不会抛出超时异常,代码只会永远卡住。例如,上次,我的代码卡在 invisibility_of_element_located 并且即使超时设置为 10 秒也没有响应。
WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.XPATH, "//*[@ng-show='route.isCalculating']")))
解决方案
您可以尝试将等待包装在 try / except 块中,以查看是否可以捕获TimeOutException
:
from selenium.common.exceptions import TimeoutException
try:
print("Attempting to locate element")
WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.XPATH, "//*[@ng-show='route.isCalculating']")))
except TimeoutException:
print("TimeoutException encountered")
print("Task complete")
根据控制台中打印的内容,您可能会确定是否完全命中了异常。
如果TimeoutException
没有被捕获,您可以使用except:
并查看是否有任何东西被捕获。
推荐阅读
- javascript - 如何在我的代码中修复移动浏览器的 ajax 请求/响应
- angularjs - 从 angularjs 1.5 升级到 angular 5 时如何解决可注入常量
- android - Android Studio 3.3 点击 R.layout.some_layout 问题
- ios - 带有 IBM MobileFirst 服务器的 iOS 应用程序,发出 {"error_description":"Client authentication failed","error":"invalid_client"}
- react-native - 如何在 react-native-datetime-picker 中禁用特定日期?
- java - 为什么上传照片时我的 gui 布局会发生变化?
- google-dfp - 在 Google Admanager (DFP) 中从 lineitemid 获取点击次数和展示次数
- powershell - 将 PowerShell 查询输出到电子邮件
- sql - 来自 2 个表的平均函数
- bit-manipulation - 最后设置位相同的下一个数字