我正在尝试使用Xvfb在Firefox的无头模式下运行Python + Selenium脚本,但是我得到了错误。Xvfb没有太多的文档或指南来解决这个问题,所以在这里寻求帮助。
环境信息:
操作系统: CentOS 6.5版(最小安装)
Xvfb: xorg-x11-server-Xvfb-1.15.0
Firefox: 52.8.0
geckodriver: 0.24.0
Python: 3.6.7
遵循以下步骤:
一旦完成上述要求的安装。我用以下命令启动了一个虚拟显示:
$Xvfb :1 -ac &
此外,我还尝试了:
$Xvfb :1 -screen 0 1024x768x24 -extension RANDR &
然后我设置了显示变量:
export DISPLAY=:1
当我试图在Python控制台中启动Selenium WebDriver时,我得到了错误Connection refused
> from selenium import webdriver
> from pyvirtualdisplay import Display
> display = Display(visible=0, size=(800, 600))
> display.start()
> driver = webdriver.Firefox()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
keep_alive=True)
File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused
任何帮助或建议都将不胜感激。
发布于 2019-03-22 01:04:52
围绕xvfb有一个名为PyVirtualDisplay的包装器,它似乎就是为这个解决方案而设计的。如果你只是执行一个pip install pyvirtualdisplay
,下面的脚本应该运行一个无头的火狐窗口:
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox(executable_path="/Users/username/Location/geckodriver")
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
https://stackoverflow.com/questions/55285226
复制相似问题