我尝试在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
如何修复例外情况?谢谢你的帮助。
答案 0 :(得分:26)
当您尝试在没有显示器的盒子(如Ubuntu服务器)上以非无头模式运行浏览器时,可能会出现此错误。
您可以通过查看运行脚本后通常保留在工作目录中的Process unexpectedly closed with status: 1
文件来检查是否是geckodriver.log
错误的原因,它应该有一行代码:< / p>
Error: GDK_BACKEND does not match available displays
如果您在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')
答案 1 :(得分:1)
如果没有更多信息,很难确定,但是当您使用的浏览器版本与您使用的基础Web驱动程序不兼容时,通常会发生这种情况。
确保它们兼容,例如通过升级您的webdriver,这个问题应该解决。