我尝试在Linux机器上运行selenium程序.但是我得到了例外:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 154, in __init__
keep_alive=True)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 151, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 240, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute
self.error_handler.check_response(response)
File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status: 1
Run Code Online (Sandbox Code Playgroud)
我该如何修复异常?谢谢你的帮助.
Jay*_*mon 27
当您尝试在没有显示器的盒子(如Ubuntu服务器)上以非无头模式运行浏览器时,可能会出现此错误.
您可以Process unexpectedly closed with status: 1通过查看geckodriver.log运行脚本后通常保留在工作目录中的文件来检查是否是导致错误的原因,它应该有如下行:
Error: GDK_BACKEND does not match available displays
Run Code Online (Sandbox Code Playgroud)
如果您在geckodriver.log那时看到该行,则需要切换脚本以无头模式运行Firefox:
from selenium import webdriver
from selenium.webdriver import FirefoxOptions
opts = FirefoxOptions()
opts.add_argument("--headless")
browser = webdriver.Firefox(firefox_options=opts)
browser.get('http://example.com')
Run Code Online (Sandbox Code Playgroud)
如果没有更多信息,很难确定,但是当您使用的浏览器版本与您使用的底层网络驱动程序不兼容时,通常会发生这种情况。
确保它们兼容,例如通过升级您的网络驱动程序,这个问题应该得到解决。