运行selenium(Firefox)的networking驱动程序是否可以没有GUI?
我们正在考虑将我们的生产服务器从Ubuntu- desktop 10.04升级到Ubuntu- server 12.04。
我们有当前桌面操作系统上运行的各种服务,如Selenium Web Driver。 我的问题是Selenium Web Driver可以从基于cli的系统运行吗?
我的直接想法是,它不能,因为它依赖于Firefox,但我想要有人来certificate我错了!
你正在寻找的是一个无头浏览器 。
是的,可以在Firefox上无恶意地运行Selenium。 这里是你可以关注的文章。
以下是设置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
我很容易设法隐藏浏览器窗口。
只需安装PhantomJS 。 然后,改变这一行:
driver = webdriver.Firefox()
至:
driver = webdriver.PhantomJS()
其余的代码将不需要更改,也不会打开浏览器。 为了进行debugging,请在代码的不同步骤使用driver.save_screenshot('screen.png')
,或者继续使用Firefox webdriver进行开发。
如果你想要无界浏览器的支持,那么你可能会采用另一种方法。
https://github.com/detro/ghostdriver
这是在selenium会上宣布的,现在还在发展中。 它使用PhantomJS作为浏览器,比HTMLUnitDriver好得多,目前还没有截图,但是它还处于积极的发展阶段。
是。 启动webdriver时,可以使用HTMLUnitDriver
代替FirefoxDriver
。 这是无头浏览器设置。 详情可以在这里find。
可选的是像这样使用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(putty-connected console)。 但是,在桌面环境中一切正常。
另一个select是GhostDriver,现在WebDriver正式支持: Ghostdriver的实际性能增益
请注意,HtmlUnitDriver webclient是单线程的,Ghostdriver只有40%的function是WebDriver。
尽pipe如此,Ghostdriver正常运行testing,我有问题连接到WebDriver枢纽。
更新:你不需要XVFB来运行Firefox了。 Linux上的Firefox v55和Windows / Mac上的Firefox v56现在支持无头执行。
我在这里添加了一些如何使用的文档:
https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java
- 如何在所有浏览器中运行unit testing?
- Firefox WebDriver不支持Firefox 32
- 如何在Selenium Webdriver 2 Python中获取当前的URL?
- 在量angular器中,browser.isElementPresent vs element.isPresent vs element.isElementPresent
- 使用Selenium WebDriver切换选项卡与Java
- Selenium WebDriver如何解决陈旧的元素引用exception?
- 使用selenium下载文件
- 使用Java和Selenium WebDriver在表单和iframe中查找元素
- 如何在Angularjs量angular器中使用命令行参数?