【问题标题】:WebDriverException: Message: chrome not reachable after long timeWebDriverException:消息:长时间无法访问 chrome
【发布时间】:2019-08-30 16:39:37
【问题描述】:

这是代码:

driver = webdriver.Chrome()
while True:
   #do thing that require hours
   #then i use selenium once
driver.get(link)

我需要先打开 selenium,然后制作需要数小时的东西,因为当我打开 selenium 时,我需要做好准备并加快速度。如果把driver = webdriver.Chrome()放在while下面,它会减慢一切 我不知道它是否相关,但我使用nohup 命令运行此代码。

追溯:

Traceback (most recent call last):
  File "Scraper.py", line 84, in <module>
    main()
  File "Scraper.py", line 74, in main
    waitForSomething()
  File "Scraper.py", line 54, in waitForSomething
    fillForm(str(link)[2:-2])
  File "Scraper.py", line 30, in fillForm
    driver.get(link)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 333, in get
    self.execute(Command.GET, {'url': url})
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_resp$
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
  (Session info: chrome=192.168.0.0)
  (Driver info: chromedriver=2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752),platform=Linux 4.9.0-9-amd64 x$

【问题讨论】:

  • 你在while循环中使用硒吗?
  • 是的,在调用一个函数的同时调用另一个使用 selenium 的函数
  • 在 while 循环下初始化 webdriver.Chrome 如何减慢速度?初始化时间在循环上方或下方相同。可能是因为 Python 执行环境运行了很长时间后陷入了卡顿,导致循环执行后速度变慢了?
  • 我的意思是,一旦我退出,我需要非常快,如果我在下面初始化 webdriver,而我认为我失去了 3-4 秒,也是因为我在一个真的可怜的电脑。相反,如果我首先初始化它只需要加载给它的页面
  • 你有一个运行“几个小时”的东西,然后你担心它完成后的 3-4 秒?我认为您在这里尝试解决错误的性能问题。

标签: python selenium google-chrome selenium-webdriver selenium-chromedriver


【解决方案1】:

最初,我问自己的问题与 @GregBurghardt 在 cmets 中问的问题相同,直到我分析了详细的错误堆栈跟踪。

是的,在标记为#do thing that require hours 的这些步骤中发生了令人惊奇的事情。因此,将 Chrome 浏览器版本显示为 chrome=76.0chrome=75.0chrome=74.0

(Session info: chrome=192.168.0.0)

这非常令人惊讶。

除非您向我们更新为什么以及如何将 Chrome 版本更改为这样的值,否则几乎不可能分析该问题。


话虽如此,您的主要问题可能是您使用的二进制文件版本之间的不兼容

  • 您正在使用 chromedriver=2.36
  • chromedriver=2.36 的发行说明明确提及以下内容:

支持 Chrome v63-65

  • 大概你使用的是最新的chrome=76.0
  • ChromeDriver v76.0 的发行说明明确提及以下内容:

支持Chrome 76版

  • 我们不知道您的 Selenium 客户端 版本。

所以 ChromeDriver v2.36Chrome 浏览器 v76.0

之间存在明显的不匹配

解决方案

确保:

  • Selenium 升级到当前级别 Version 3.141.59
  • ChromeDriver 已更新到当前的ChromeDriver v76.0 级别。
  • Chrome 已更新至当前 Chrome 版本 76.0 级别。 (根据ChromeDriver v76.0 release notes
  • 清理你的项目工作区通过你的IDE重建你的项目只需要依赖。
  • 如果您的基本 Web 客户端 版本太旧,请卸载它并安装最新的 GA 和发布版本的 Web 客户端
  • 进行系统重启
  • 非root用户身份执行@Test
  • 始终在 tearDown(){} 方法中调用 driver.quit() 以优雅地关闭和销毁 WebDriverWeb Client 实例。

参考资料:

【讨论】:

  • 应该更清楚。每当您看到完全没有意义的异常错误时,请检查 chrome 和 chrome 驱动程序版本。
  • 就我而言,在出现错误之前一切正常。读完这篇文章后,我用ps -aux 检查了活动进程,发现了一百个谷歌浏览器进程。我认为它是无法达到的。大声笑
【解决方案2】:

就我而言,我使用服务器来启动应用程序。这是因为我运行了很多 google-chrome 活动进程,所以 chrome 不堪重负。

您可以使用ps -aux 命令检查这一点并查看谷歌进程。

就我而言,因为我没有使用try driver.get(url) , except: driver.close() 所有那些失败的尝试都在我的服务器中保持打开状态。

我用killall usernamehere把他们都杀了

然后它又工作了。

希望它也适合你

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    相关资源
    最近更新 更多