这是我的代码:
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
请问,我该如何解决问题...
答案 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),以下解决方案应该可以正常使用。
指定代码或脚本中的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。
答案 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%)
您较早安装的现有geckodriver通常可以放置在/usr/local/bin
中。首先通过运行sudo rm -r /usr/local/bin/geckodriver
从this link下载geckodriver版本17。
将下载的文件(geckodriver-v0.17.0-arm7hf.tar.gz
)从Downloads
文件夹移至home
目录
解压缩文件
tar -xzvf geckodriver-v0.17.0-arm7hf.tar.gz
这将在您的主目录中创建一个名为“ geckodriver”的文件夹
将提取的“ geckodriver”移动/复制到/usr/local/bin/
sudo cp geckodriver /usr/local/bin/
运行
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