python - 网络驱动程序异常 : Message: connection refused

标签 python selenium ubuntu geckodriver

我正在使用带有 geckodriver 的 selenium 尝试获取 html 页面。下面是我正在使用的代码

from pyvirtualdisplay import Display    
from selenium import webdriver  

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

# start the browser. Using firefox.
browser = webdriver.Firefox()

browser.get('https://www.google.com')

print browser.title

browser.quit()

display.stop()

当我用 python 执行它时,我收到以下错误消息。

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    browser = webdriver.Firefox()
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 152, in __init__
    keep_alive=True)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 98, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 188, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused

我查阅了 geckodriver.log

1500842848329   geckodriver INFO    geckodriver 0.18.0
1500842848362   geckodriver INFO    Listening on 127.0.0.1:45467
1500842849526   geckodriver::marionette INFO    Starting browser /usr/bin/firefox with args ["-marionette"]

我不确定接下来要看哪里。有什么提示吗?

更新 1:似乎当我对 VPS 进行电源重置时,脚本开始工作。我进一步调查它并记得有四个已失效的进程从以前的 firefox 执行中运行,我必须杀死它们。我对 Linux 中进程处理的内部机制了解不够,无法完全理解这一点。 geckodriver 变得困惑了吗?

最佳答案

我也遇到过这个问题......即使是在运行 X 服务器和功能齐全的 KDE 环境的机器上也是如此。事实证明,使用 geckodriver 和 Firefox 时有严格的版本要求。我用最新版本的 geckodriver 运行旧版本的 Firefox。一旦我下载了发行说明中列出的版本(并在我的 webdriver 声明中指定了该 firefox 二进制文件的路径),它运行良好:

driver = webdriver.Firefox(firefox_binary='/path/to/latest/firefox/binary')

https://github.com/mozilla/geckodriver/releases

关于python - 网络驱动程序异常 : Message: connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45269792/

相关文章:

Python:追加原始对象与追加对象的副本

python - asp.net 破解 sessionId 使用 python 脚本被暴力破解的可能性

python - 如何强制重新编译站点包中的 py 源代码?

node.js - 如何使用Selenium chromedriver而不强制更新?

c# - 使用 selenium C# webdriver 完全关闭浏览器

ubuntu - Vim "Error detected while processing/usr/share/vim/vimrc"

ubuntu - 压缩所有文件甚至隐藏

Ubuntu 11.04 上的 Python 2.7.1 和 Python 2.7.1+

python - Py2exe 和 selenium - IOError : [Errno 2] No such file or directory: '\\dist\\main.exe\\selenium\\webdriver\\firefox\\webdriver_prefs.json'

c# - 从 Linux 主机连接到 SQL Server 时远程证书被拒绝