问题描述
我们正在考虑将生产服务器从Ubuntu-desktop 10.04升级到Ubuntu-server 12.04。
我们在当前的桌面操作系统上运行着各种服务,例如Selenium Web Driver。我的问题是Selenium Web Driver是否可以从基于cli的系统中运行?
我立即想到的是,它不能,因为它依赖于Firefox,但我希望有人证明我做错了!
最佳办法
您正在寻找的是headless-browser。
是的,可以在Firefox上无头运行Selenium。这是您可以遵循的post。
这是设置Xvfb的摘要步骤
#install Xvfb
sudo apt-get install xvfb
#set display number to :99
Xvfb :99 -ac &
export DISPLAY=:99
#you are now having an X display by Xvfb
次佳办法
Chrome现在具有无头模式:
op = webdriver.ChromeOptions()
op.add_argument('headless')
driver = webdriver.Chrome(options=op)
第三种办法
如果您需要无头浏览器支持,则可以采用另一种方法。
https://github.com/detro/ghostdriver
它是在硒会议上宣布的,目前仍在开发中。它使用PhantomJS作为浏览器,并且比HTMLUnitDriver更好,还没有屏幕截图,但是由于它仍在积极开发中。
第四种办法
是。启动webdriver时,可以将HTMLUnitDriver代替FirefoxDriver使用。这是无头的浏览器设置。可以找到详细信息here。
第五种办法
可选的是使用pyvirtualdisplay
这样的:
from pyvirtualdisplay import Display
display = Display(visible=0, size=[800, 600])
display.start()
#do selenium job here
display.close()
较短的版本是:
with Display() as display:
# selenium job here
通常,这是xvfb
的python封装,以某种方式更方便。
顺便说一句,尽管PhantomJS
是无头浏览器,如果您使用它,则不会打开任何窗口,但看来PhantomJS
仍需要GUI环境才能工作。
在无头模式(putty-connected控制台)中使用PhantomJS()
而不是Firefox()
时,出现错误代码-6。但是,在桌面环境中一切正常。
第六种办法
更新:您不再需要XVFB来运行无头Firefox。 Linux上的Firefox v55 +和Windows /Mac上的Firefox v56 +现在支持无头执行。
我在这里添加了一些how-to-use文档:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java