【发布时间】:2019-08-12 14:11:00
【问题描述】:
我正在尝试使用 Xvfb 在 Firefox 中以无头模式运行 Python + Selenium 脚本,但出现错误。没有太多可用于 Xvfb 解决问题的文档或指南,因此请在此处寻求帮助。
环境信息:
操作系统:CentOS 6.5 版(最小安装)
Xvfb:xorg-x11-server-Xvfb-1.15.0
火狐:52.8.0
壁虎司机:0.24.0
Python:3.6.7
后续步骤:
完成上述要求的安装后。我启动了一个虚拟显示器:
$Xvfb :1 -ac &
另外,我尝试过:
$Xvfb :1 -screen 0 1024x768x24 -extension RANDR &
然后我设置显示变量:
export DISPLAY=:1
当我尝试在 Python 控制台中启动 Selenium WebDriver 时,我收到错误 Connection denied:
> 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
任何帮助或建议将不胜感激。
【问题讨论】:
-
这对大多数人来说可能很明显,但是这个文件
"<stdin>"回溯指的是什么?此外,您需要为无头浏览器设置firefoxCapabilities和firefoxProfile。 -
@C.Peck "
" 错误应该从 Selenium webdriver 抛出,但不太清楚为什么它会抛出这样的错误。您能否详细解释一下如何设置 firefox 功能和配置文件,或者请提供链接以供参考 -
我将首先警告我对 xvfb 完全不熟悉,而且我从未尝试过从 python 命令行运行 selenium(仅通过调用脚本)。我将添加一个可以为您解决此问题的脚本的答案。
-
在讨论How to make firefox headless programmatically in Selenium with python? 中查看@MortenB cmets。 MOZ_HEADLESS=1 python manage.py test 成功了!不再需要 xvfb-run 了!!!
-
@BillClintonJ,进展如何?你试过我的回答吗?谢谢。
标签: python-3.x selenium xvfb centos6.5 firefox-headless