我们正在考虑将我们的生产服务器从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
我很容易设法隐藏浏览器窗口。
只是install PhantomJS。然后,更改此行:
driver = webdriver.Firefox()
至:
driver = webdriver.PhantomJS()
其余代码不需要更改,也不会打开任何浏览器。出于调试目的,请在代码的不同步骤使用driver.save_screenshot('screen.png')
,或者继续使用Firefox webdriver进行开发。
如果您想要无头浏览器支持,那么您可以采用另一种方法。
https://github.com/detro/ghostdriver
它是在Selenium会议期间宣布的,目前仍处于开发阶段。它使用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 console)中使用PhantomJS()
而不是Firefox()
时,我得到了错误代码-6。但是在桌面环境中一切正常。
更新:你不再需要XVFB来运行无头Firefox了。 Linux上的Firefox v55 +和Windows / Mac上的Firefox v56 +现在支持无头执行。
我在这里添加了一些如何使用的文档:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
另一种选择是GhostDriver,现在由WebDriver正式支持:Ghostdriver actual performance gain
请注意,HtmlUnitDriver webclient是单线程的,而Ghostdriver只有40%的功能是WebDriver。
尽管如此,Ghostdriver正常运行测试,我有问题将它连接到WebDriver集线器。
是的,您可以在没有浏览器的情况下运行测试脚本,但是您应该在无头模式下运行它们。