【发布时间】:2019-05-29 14:14:51
【问题描述】:
我一直在为此绞尽脑汁。我收到了错误:
系统 geckodriver 意外退出。状态码:-11。
我正在使用作为共享托管 Web 服务器的 Linux 服务器。我在虚拟环境中设置了所有内容。
- Linux 服务器 - CentOS,发行版:7.4.1708
- Selenium 版本 3.141.0
- geckodriver 版本 0.23.0
- 火狐60.3.0
- Python 3.6.2,不能使用更新的版本
Python、Selenium 和 Geckodriver 位于 Linux Web 服务器上的虚拟环境中。 Firefox 位于虚拟环境之外
export PATH=$PATH:/path/to/geckodriver
到我的终端,让 geckodriver 在PATH 环境变量中使用。
下面是我的代码:
#!/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()
这是我的回溯错误:
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
为什么会出现此错误,如何解决?
【问题讨论】:
-
-11 表示子进程中的分段错误,如果有帮助的话。
-
@Jayjayyy:它出现在
subprocessdocumentation 中。 (真 exit status values 是非负数,所以你知道它们在某种程度上很特别。) -
@Jayjayyy:
subprocess表示由于带有负数的信号(而不是exit,这是唯一的其他选择)而终止子进程表示信号(并且不能与退出代码混淆)。 (分段错误发生在执行期间,而不是之前,尽管理论上可能发生在fork和exec之前。) -
谢谢大家!如何修复 geckodriver.exe 的分段错误?我昨天尝试通过服务器终端运行“geckodriver --version”,但它返回了同样的错误:分段错误。驱动程序的权限设置为 755。
-
请运行
file /home/DIRECTORY/DIRECTORY/DIRECTORY/venv/bin/geckodriver并发布输出。
标签: python selenium geckodriver