【问题标题】:python/selenium/chromedriver TimeoutExceptionpython/selenium/chromedriver TimeoutException
【发布时间】:2018-02-21 22:43:01
【问题描述】:

我正在使用 selenium 和 chrome webdriver 从网站上抓取 pdf。我使用以下内容,从列表中拉出site

driver.get(site) 
source = driver.page_source
...
...
driver.quit()

但我不断收到以下错误,我的site 列表中有大约 6,000 个观察结果:

Traceback (most recent call last):
File "<stdin>", line 127, in <module>
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 323, in get self.execute(Command.GET, {'url': url})
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 311, in execute self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 237, in check_response raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout
(Session info: chrome=63.0.3239.84)
(Driver info: chromedriver=2.33.506092 
(733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.10.0-40-generic x86_64)

我尝试过以更短的时间间隔刷新源页面(每 200 次搜索,但我应该更短吗?)。

如何延长 selenium 的 120 秒超时限制?

【问题讨论】:

  • 通常timeout 发生在您尝试导航到页面并且页面在允许的时间内没有响应时。请分享您的 代码 和您正在抓取的页面的 HTMLURL,以便有人可以放心地回答。当timeout 发生时,我对您要达到的目标感到有些困惑。
  • 我猜driver.set_page_load_timeout(121) 是这样做的方法。
  • 这是否需要 JS 调用,或者您可以通过 HTTP 请求获取您想要的内容?如果是这样,它们将为您节省大量时间。

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

此错误消息...

Traceback (most recent call last):
File "<stdin>", line 127, in <module>
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 323, in get self.execute(Command.GET, {'url': url})
.
selenium.common.exceptions.TimeoutException: Message: timeout
(Session info: chrome=63.0.3239.84)
(Driver info: chromedriver=2.33.506092 
(733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.10.0-40-generic x86_64)

...暗示 webdriver 实例无法与 site url 建立连接,并且发生 timeout

您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:

  • 您正在使用 ChromeDriver v2.33
  • ChromeDriver v2.33 的发行说明明确提及以下内容:

支持 Chrome v60-62

  • 您正在使用 chrome=63.0
  • Selenium 版本我们不知道。

因此,您使用的 ChromeDriver v2.33Chrome 浏览器 v63.0 之间存在明显的不匹配。因此 ChromeDriver 无法生成新的 Chrome 浏览器 进程。

解决方案

  • ChromeDriver 更新到最近的 v2.35 级别。
  • Chrome 升级到稳定的 Chrome v64.x 级别。 (as per ChromeDriver v2.35 release notes)
  • Selenium 升级到当前级别 3.9.1 版
  • 通过您的IDE清理重新构建您的项目。
  • 清除浏览器缓存
  • 运行CCleaner 工具以清除执行测试套件之前和之后的所有操作系统琐事。
  • 如果您的 Web 浏览器 基础版本太旧,请通过Revo Uninstaller 使用 Moderate Scan 卸载 Web 浏览器 并安装最近的 GA 发布版的网络浏览器
  • 执行您的测试

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 2017-03-09
    • 2017-02-09
    • 2022-01-16
    • 2021-02-28
    • 2021-04-17
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多