Selenium WebDriverWait不会引发超时异常

时间:2019-10-13 00:58:23

标签: python selenium webdriverwait

我正在使用硒来刮网。网络类似于Google Map,我需要输入开始位置和结束位置,然后获取结果。该网页加载缓慢,有时会停止响应。因此,我尝试使用WebDriverWait捕获超时异常并重新启动网页。

但是,实际上,如果网页停止响应,则webDriverWait不会引发超时异常,并且代码将永远卡住。 例如,上次,我的代码停留在invisibility_of_element_located,并且即使超时设置为10s也没有响应。

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

1 个答案:

答案 0 :(得分:0)

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