我正在使用硒来刮网。网络类似于Google Map,我需要输入开始位置和结束位置,然后获取结果。该网页加载缓慢,有时会停止响应。因此,我尝试使用WebDriverWait捕获超时异常并重新启动网页。
但是,实际上,如果网页停止响应,则webDriverWait不会引发超时异常,并且代码将永远卡住。 例如,上次,我的代码停留在invisibility_of_element_located,并且即使超时设置为10s也没有响应。
WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.XPATH, "//*[@ng-show='route.isCalculating']")))
答案 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:
来查看是否有任何捕获。