我们正在考虑将我们的生产服务器从Ubuntu-桌面 10.04升级到Ubuntu- 服务器 12.04。是否可以在没有GUI的情况下运行硒(Firefox)网络驱动程序?
我们在当前的桌面操作系统上运行了各种服务,例如Selenium Web Driver。我的问题是Selenium Web Driver可以从基于cli的系统运行吗?
我的直接想法是,它不能,因为它依赖于Firefox,但我想要有人证明我错了!
我们正在考虑将我们的生产服务器从Ubuntu-桌面 10.04升级到Ubuntu- 服务器 12.04。是否可以在没有GUI的情况下运行硒(Firefox)网络驱动程序?
我们在当前的桌面操作系统上运行了各种服务,例如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
是的。在启动webdriver时,您可以使用HTMLUnitDriver
代替FirefoxDriver
。这是无头浏览器设置。详情可以在here找到。
这个支持函数是否会有save_screenshot()? http://coreygoldberg.blogspot.co.uk/2011/06/python-selenium-webdriver-capture.html – nonshatter
还没有尝试,但它可能是可能的,因为你仍然有效地创建一个用户界面,但显示它在'虚拟'窗口上。 – grahaminn
HTMLUnitDriver不会支持捕捉屏幕截图,因为内容根本不会呈现(问题1361)。我能想到的另一种方法是使用getHTMLSource并显示HTML页面而不是截图。 –
如果你想模拟浏览器支持,那么有可能会采取另一种方法。
https://github.com/detro/ghostdriver
有人硒会议期间宣布,它仍然在发展。它使用PhantomJS作为浏览器,比HTMLUnitDriver好得多,目前还没有截图,但仍处于积极的发展阶段。
请注意,HtmlUnitDriver webclient是单线程的,Ghostdriver只有40%的功能是WebDriver。
尽管如此,Ghostdriver正常运行测试,我有问题连接到WebDriver枢纽。
这是否提供其他答案没有的新信息? –
另一种选择是GhostDriver这是目前正式支持的webdriver:Ghostdriver actual performance gain
我易于管理的隐藏浏览器窗口。
只是install PhantomJS。然后,改变这一行:
driver = webdriver.Firefox()
到:
driver = webdriver.PhantomJS()
你的代码的其余部分将不需要改变,没有浏览器将打开。出于调试目的,请在代码的不同步骤使用driver.save_screenshot('screen.png')
,或者继续在开发中使用Firefox webdriver。
一个可选的方法是使用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环境中工作。
当我在无头模式下使用PhantomJS()
代替Firefox()
时,我得到了错误代码-6(连接控制台)。然而,在桌面环境中一切正常。
更新:你不需要XVFB来运行Firefox了。 Linux/Firefox上的Firefox v55和Windows/Mac上的Firefox v56现在支持无头执行。
我加了一些如何使用的文档在这里:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
相关:Chrome浏览器在无头运行硒(http://www.chrisle.me/2013/08/running-headless -selenium-with-chrome /) – jfs