当前位置: 首页>>技术教程>>正文


ubuntu – 是否可以在没有GUI的情况下运行Selenium(Firefox)Web驱动程序?

, ,

问题描述

我们正在考虑将生产服务器从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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10602.html,未经允许,请勿转载。