首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >会导致错误:服务geckodriver意外退出。状态代码为:-11

会导致错误:服务geckodriver意外退出。状态代码为:-11
EN

Stack Overflow用户
提问于 2019-01-02 23:51:16
回答 1查看 5K关注 0票数 5

我一直为此绞尽脑汁。我得到了错误:

系统驱动程序意外退出。状态代码:-11。

我使用的是一个Linux服务器,它是一个共享的托管web服务器。我把一切都建立在虚拟环境中。

  • Linux CentOS,发行版: 7.4.1708
  • Selenium版本3.141.0
  • geckodriver版本0.23.0
  • Firefox 60.3.0
  • Python3.6.2不能使用更新版本

Python、Selenium和Geckodriver驻留在Linux web服务器上的虚拟环境中。Firefox驻留在虚拟环境之外。

代码语言:javascript
代码运行次数:0
运行
复制
export PATH=$PATH:/path/to/geckodriver

到我的终端,让geckodriver在PATH环境变量中使用。

下面是我的代码:

代码语言:javascript
代码运行次数:0
运行
复制
#!/home/DIRECTORY/DIRECTORY/DIRECTORY/venv/bin/python

# -*- coding: UTF-8 -*-
import cgitb
import cgi
from selenium import webdriver
from selenium.webdriver import FirefoxOptions

cgitb.enable()
print ("Content-Type: text/html; charset=utf-8\n\n")
path = r'/home/DIRECTORY/DIRECTORY/DIRECTORY/venv/bin/geckodriver'
binary = FirefoxBinary(r'/usr/lib64/firefox')

opts = FirefoxOptions()
opts.add_argument("--headless")

browser = webdriver.Firefox(firefox_options=opts, firefox_binary=binary, executable_path=path)
rowser.get("http://google.com/")
print ("Headless Firefox Initialized")
browser.quit()

以下是我的跟踪错误:

代码语言:javascript
代码运行次数:0
运行
复制
Traceback (most recent call last):
File "selen.py", line 20, in <module>
browser = webdriver.Firefox(firefox_options=opts, executable_path=path)
File "/home/DIRECTORY/DIRECTORY/DIRECTORY/venv/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
self.service.start()
File "/home/DIRECTORY/DIRECTORY/DIRECTORY/venv/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 98, in start
self.assert_process_still_running()
File "/home/DIRECTORY/DIRECTORY/DIRECTORY/venv/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 111, in assert_process_still_running
% (self.path, return_code)
selenium.common.exceptions.WebDriverException: Message: Service /home/DIRECTORY/DIRECTORY/DIRECTORY/venv/bin/geckodriver unexpectedly exited. Status code was: -11

为什么我要得到这个错误,以及如何修复它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-04 17:33:49

这至少是对你问题的部分回答。

过去,某些版本的Selenium与Firefox和/或geckodriver的某些版本不能很好地协同工作,因此存在一些问题。找到您的版本,如果可能的话,将它们更新到最新的版本,并为您的版本查找现有的bug报告。

在我的Ubuntu18.04LTS仿生海狸系统上,以下版本可以很好地协同工作:

  • 检查Python版本 $ python3 --版本Python3.6.7
  • 检查Selenium版本 $ python3 -c“导入selenium;print(selenium.__version__)”3.141.0
  • 检查Firefox版本 $ firefox -版本Mozilla Firefox 64.0
  • 检查geckodriver版本 $ geckodriver -版本的geckodriver0.23.0( 2018-10-04)这个程序的源代码可以从https://hg.mozilla.org/mozilla-central中的测试/ geckodriver获得。此程序受Mozilla公共许可证2.0条款的约束。您可以在https://mozilla.org/MPL/2.0/获得许可证的副本。

如果必须浏览到特定路径才能使这些命令正常工作,而且这些命令不能直接在终端或虚拟环境中工作,则可能需要在调用webdriver.Firefox时设置以下关键字参数之一

  • firefox_binary - FirefoxBinary的实例或火狐二进制文件的完整路径。如果未定义,将使用系统默认Firefox安装。
  • executable_path -完全路径覆盖用于Firefox47.0.1及更高版本的geckodriver二进制文件,默认情况下从系统路径中提取二进制文件。

没有什么花哨的测试,而是只在无头模式下使用Firefox的一个最小的Selenium示例,例如minimal_selenium_test.py

代码语言:javascript
代码运行次数:0
运行
复制
import selenium.webdriver

options = selenium.webdriver.FirefoxOptions()
options.add_argument("--headless")

driver = selenium.webdriver.Firefox(firefox_options=options)
driver.get('https://www.python.org/')
print(driver.title)
driver.close()

这应该适用于本地膝上型计算机、虚拟服务器以及Docker容器内,并且应该打印:

代码语言:javascript
代码运行次数:0
运行
复制
$ python3 minimal_selenium_test.py 
Welcome to Python.org
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54014683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档