【问题标题】:selenium.common.exceptions.WebDriverException: Message: connection refusedselenium.common.exceptions.WebDriverException:消息:连接被拒绝
【发布时间】:2017-01-25 15:12:38
【问题描述】:

这是我的代码:

from selenium import webdriver

browser = webdriver.Firefox()

browser.get('http://www.python.org')

browser.close()

当我运行这个脚本时它启动了firefox浏览器,但是页面是空白的,然后命令行显示错误消息:

Traceback (most recent call last):
  File "ad.py", line 3, in <module>
    browser = webdriver.Firefox()
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 76, in __init__
    keep_alive=True)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session
    response = self.execute(Command.NEW_SESSION, capabilities)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused

我的 python 版本是 2.7.3,而 selenium 版本是 selenium-3.0.0.b3.egg-info

请问,我该如何解决这个问题...

【问题讨论】:

  • 它对我来说工作正常。你在proxy后面吗?
  • 不,永远不要落后于代理。
  • 你解决了这个问题@leven

标签: python selenium selenium-webdriver


【解决方案1】:

检查你的geckodriver.log文件(应该和python文件在同一目录)

如果显示Error: GDK_BACKEND does not match available displays,则安装pyvirtualdisplay:

pip install pyvirtualdisplay selenium

你可能也需要 xvfb:

sudo apt-get install xvfb # Debian

sudo yum install Xvfb # Fedora

然后尝试添加此代码:

from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()

完整示例:

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

browser = webdriver.Firefox()
browser.get('http://www.python.org')

browser.close()

【讨论】:

  • 我可以确认使用这样的虚拟显示器解决了我的问题。
  • 为我工作,但需要在 Centos 上使用 Xvfp(大写 X)
【解决方案2】:

正如@kervvv 所提到的,这个问题可能与旧版本的 Firefox 有关,而不是selenium 和/或geckodriver 期望或需要的版本。应该注意的是,据我所知,来自 selenium 的特定错误消息有些笼统或含糊。因此,它没有明确显示错误发生的原因。

如果用户在使用旧版 Firefox(包括扩展支持版本 (ESR))时在这里寻求帮助,以下解决方案应该可以正常工作。

  1. 访问 the Firefox download page 下载 Firefox 的 Beta、Nightly 或 Developer 版本。
  2. 将包解压到文件系统上的任意位置(任意位置)
  3. 在您的代码或脚本中指定FirefoxBinary 以指向下载的位置。

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    binary = FirefoxBinary('/home/username/firefox/firefox')
    driver = webdriver.Firefox(firefox_binary=binary)
    driver.get(url)
    

这适用于我在 Gentoo 上,例如,geckodriver (0.20.0) 和 selenium (3.11.0) 的版本是上游可用的最新版本,而 Firefox (ESR) 的版本是 52。

【讨论】:

    【解决方案3】:

    也有这个问题。需要设置 DISPLAY。 对我来说,Xvfb 帧缓冲区在 :99 的本地机器上运行。

    $ export DISPLAY=:99
    

    【讨论】:

      【解决方案4】:

      有同样的问题。认为它与代理或端口相关(无济于事)但解决我的问题的只是简单地更新 Firefox。我正在运行52.0.xxx 并更新为57.0.2。链接here

      【讨论】:

        【解决方案5】:

        这可能有多种原因。

        • 很可能是因为“最新”版本的 geckodriver 无法与“稍旧”的 firefox 通信。

        • 解决此问题的最简单方法是尝试不同的旧版本 geckodriver。 运行以下命令以查找您的 geckodriver 的当前版本

          geckodriver --version
          
        • 如果显示版本为 19 或以上,执行以下步骤使用 geckodriver 版本 17(工作 90% 次)

          1. 您现有的 geckodriver 最常见的可能是在您之前安装它时放在/usr/local/bin 中。首先通过运行sudo rm -r /usr/local/bin/geckodriver删除它

          2. this link 下载第 17 版 geckodriver。 将下载的文件(geckodriver-v0.17.0-arm7hf.tar.gz)从您的Downloads 文件夹移动到您的home 目录中

          3. 解压文件

            tar -xzvf geckodriver-v0.17.0-arm7hf.tar.gz
            

            这将在您的主目录中创建一个名为“geckodriver”的文件夹

          4. 将此提取的“geckodriver”移动/复制到/usr/local/bin/

            sudo cp geckodriver /usr/local/bin/
            
          5. 运行

            sudo reboot
            

        现在重新运行您的程序...
        它应该工作!

        【讨论】:

          【解决方案6】:

          首先要做的事情:更新 Firefox 并确保您安装了最新版本的 geckodriver (https://github.com/mozilla/geckodriver/releases)

          【讨论】:

            【解决方案7】:

            我遇到了同样的错误。将 geckodriver vresion 更新为 geckodriver 0.24.0(2019-01-28)后对我来说效果很好。

            下载源:https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux32.tar.gz

            【讨论】:

            • 0.29.1也有同样的问题。
            猜你喜欢
            • 2017-12-29
            • 2018-09-27
            • 2018-11-01
            • 1970-01-01
            • 2017-08-08
            • 2018-06-03
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多