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

non*_*ter 105 ubuntu selenium webdriver

我们正在考虑将我们的生产服务器从Ubuntu- desktop 10.04 升级到Ubuntu- server 12.04.

我们在当前的桌面操作系统上运行各种服务,例如Selenium Web Driver.我的问题是Selenium Web Driver可以从基于cli的系统运行吗?

我的直接想法是,它不能,因为它依赖于Firefox,但我希望有人证明我错了!

gra*_*inn 95

您正在寻找的是.

是的,可以无头地在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
Run Code Online (Sandbox Code Playgroud)

  • 这适用于并支持屏幕截图.我用这个.它也适用于谷歌浏览器. (5认同)
  • 该链接现已破裂 (3认同)
  • 在Ubuntu Server 16上为我确认这项工作 (2认同)
  • 我喜欢从Python内部执行此操作,您可以使用subprocess.Popen('Xvfb ...')`或`os.system('Xvfb ...')`进行此操作,但请确保在导入网络驱动程序。 (2认同)

Sté*_*ert 21

我很容易设法隐藏浏览器窗口.

只需安装PhantomJS即可.然后,更改此行:

driver = webdriver.Firefox()
Run Code Online (Sandbox Code Playgroud)

至:

driver = webdriver.PhantomJS()
Run Code Online (Sandbox Code Playgroud)

其余代码不需要更改,也不会打开任何浏览器.出于调试目的,请driver.save_screenshot('screen.png')在代码的不同步骤中使用,或者继续使用Firefox webdriver进行开发.

  • PhantomJS 目前尚未处于积极开发阶段。Git 存储库已存档。 (4认同)
  • 最后我检查了一下,“--headless”甚至可以与“FirefoxOptions()”一起使用 (2认同)

小智 10

如果您想要无头浏览器支持,那么您可以采用另一种方法.

https://github.com/detro/ghostdriver

它是在Selenium会议期间宣布的,目前仍处于开发阶段.它使用PhantomJS作为浏览器并且比HTMLUnitDriver好得多,还没有截图,但是它仍处于活跃开发阶段.


A.J*_*A.J 9

是.您可以使用HTMLUnitDriver,而不是用于FirefoxDriver同时启动的webdriver.这是无头浏览器设置.细节可以在这里找到.

  • HTMLUnitDriver不支持捕获屏幕截图,因为根本不呈现内容(问题1361).我能想到的另一种方法是使用getHTMLSource并显示HTML页面而不是屏幕截图. (2认同)

郑文勋*_*郑文勋 8

pyvirtualdisplay一个可选的方法是像这样使用:

from pyvirtualdisplay import Display

display = Display(visible=0, size=[800, 600])
display.start()

#do selenium job here

display.close()
Run Code Online (Sandbox Code Playgroud)

一个较短的版本是:

with Display() as display:
    # selenium job here
Run Code Online (Sandbox Code Playgroud)

这通常是 python 的封装xvfb,并且以某种方式更方便。

顺便说一句,虽然PhantomJS是无头浏览器,使用时不会打开任何窗口,但似乎PhantomJS仍然需要gui 环境才能工作。

PhantomJS()当我使用而不是Firefox()无头模式(腻子连接的控制台)时,我收到错误代码-6 。不过在桌面环境下一切正常。