首页 > 解决方案 > Selenium WebDriverWait 不抛出超时异常

问题描述

我正在使用硒来抓取网页。网络类似于谷歌地图,我需要输入一个开始位置和结束位置,然后得到结果。网页加载缓慢,有时会停止响应。所以我尝试使用 WebDriverWait 来捕获超时异常并重新启动网页。

然而,实际上如果网页停止响应,webDriverWait 不会抛出超时异常,代码只会永远卡住。例如,上次,我的代码卡在 invisibility_of_element_located 并且即使超时设置为 10 秒也没有响应。

WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.XPATH, "//*[@ng-show='route.isCalculating']")))

标签: pythonseleniumwebdriverwait

解决方案


您可以尝试将等待包装在 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:并查看是否有任何东西被捕获。


推荐阅读