【发布时间】:2020-05-16 16:56:04
【问题描述】:
我有一个使用 selenium webdriver (geckodriver) 并加载各种网页的脚本。 脚本在开始时运行良好,但在随机点它停止运行而不会引发任何错误(程序有点挂起而没有真正做任何事情)。
我添加了一些日志语句来检查它何时挂起,这是由 WebDriverWait 语句引起的(见下文)。 日志中打印的最后一件事是“get_records - Loaded”。
对我来说,预期的行为是打印“get_records - Acquired pager”,或者在 10 秒后引发 TimeoutException。
[...]
logging.info("get_records - Getting url: {}".format(url))
driver.get(url)
logging.info("get_records - Loaded")
# Get records number and result pages
elem = WebDriverWait(driver, 10).until(ec.element_to_be_clickable(
(By.XPATH, "//td[@align='right']/span[@class='pager']"))
)
logging.info("get_records - Acquired pager")
[...]
Python 版本:3.7.3 硒版本:3.141.0 火狐版本:70.0.1
以前的版本 (Selenium WebDriver (2.25) Timeout Not Working) 似乎也发生了类似的错误,但该错误已关闭。
有人遇到同样的问题吗?
更新:
似乎在 elem 之前添加 time.sleep(0.5) 可以防止脚本冻结(打印“get_records - Acquired pager”,或者引发 timeoutException)。
尽管这是一个转机,但我宁愿不要强迫等待。
【问题讨论】:
标签: python selenium webdriverwait