selenium.common.exceptions.WebDriverException:消息:连接被拒绝

时间:2016-09-17 13:53:05

标签: python selenium selenium-webdriver

这是我的代码:

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 vesion是 2.7.3 ,而selenium版本是 selenium-3.0.0.b3.egg-info

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

7 个答案:

答案 0 :(得分:17)

检查您的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()

答案 1 :(得分:4)

正如@kervvv所提到的,这个问题可能与Firefox的旧版本有关,而不是selenium和/或geckodriver期望或需要的版本。应该指出的是,据我所知,来自硒的具体错误信息有点泛泛或模糊;因此,它没有明确说明错误发生的原因。

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

  1. 访问the Firefox download page下载Firefox的Beta版,Nightly版或开发版。
  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)
    
  4. 例如,Gentoo对我有用,其中geckodriver(0.20.0)和selenium(3.11.0)的版本是上游的最新版本,而Firefox(ESR)是在版本52。

答案 2 :(得分:3)

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

$ export DISPLAY=:99

答案 3 :(得分:3)

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

答案 4 :(得分:2)

这可能有多种原因。

  • 最可能是因为壁虎驱动程序的“最新”版本无法与“稍旧”的Firefox通信。

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

    geckodriver --version
    
  • 如果显示版本为19或更高版本,请执行以下步骤以使用geckodriver版本17(有效期为90%)

    1. 您较早安装的现有geckodriver通常可以放置在/usr/local/bin中。首先通过运行sudo rm -r /usr/local/bin/geckodriver

    2. 删除它
    3. this link下载geckodriver版本17。 将下载的文件(geckodriver-v0.17.0-arm7hf.tar.gz)从Downloads文件夹移至home目录

    4. 解压缩文件

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

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

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

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

      sudo reboot
      

立即重新运行程序...
应该可以!

答案 5 :(得分:0)

第一件事:更新Firefox并确保您安装了最新版本的geckodriver(https://github.com/mozilla/geckodriver/releases

答案 6 :(得分:0)

我遇到了同样的错误。将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