Selenium WebDriverWait不会引发超时异常

问题描述 投票:0回答:1

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

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

WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.XPATH, "//*[@ng-show='route.isCalculating']")))
python selenium webdriverwait
1个回答
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:来查看是否有任何捕获。

© www.soinside.com 2019 - 2024. All rights reserved.