121

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

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

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

4

11 回答 11

111

您正在寻找的是

是的,可以在 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
于 2012-05-01T15:02:00.977 回答
33

Chrome 现在有一个无头模式:

op = webdriver.ChromeOptions()
op.add_argument('--headless')
driver = webdriver.Chrome(options=op)
于 2014-05-27T20:12:05.017 回答
11

是的。您可以在启动 webdriver 时HTMLUnitDriver改用 for 。FirefoxDriver这是无头浏览器设置。详细信息可以在这里找到。

于 2012-05-01T15:01:02.570 回答
10

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

https://github.com/detro/ghostdriver

它是在 Selenium 会议期间宣布的,目前仍在开发中。它使用 PhantomJS 作为浏览器,比 HTMLUnitDriver 好得多,还没有截图,但它仍在积极开发中。

于 2012-05-02T23:02:39.707 回答
4

一个可选的方法是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

这通常是一个 python 封装xvfb,并且在某种程度上更方便。

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

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

于 2017-06-29T03:29:38.537 回答
3

更新:您不再需要 XVFB 来运行无头 Firefox。Linux 上的 Firefox v55+ 和 Windows/Mac 上的 Firefox v56+ 现在支持无头执行。

我在这里添加了一些使用方法文档:

https://developer.mozilla.org/en-US/Firefox/Headless_mode#Selenium_in_Java

于 2017-10-20T03:00:49.593 回答
2

另一个选项是现在由 WebDriver 正式支持的 GhostDriver:GhostDriver 实际性能增益

于 2013-02-05T12:27:06.957 回答
2

安装并运行容器化 Firefox:

docker pull selenium/standalone-firefox
docker run --rm -d -p 4444:4444 --shm-size=2g selenium/standalone-firefox

使用连接webdriver.Remote

driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.FIREFOX)
driver.set_window_size(1280, 1024)
driver.get('https://www.google.com')
于 2020-01-31T19:04:31.397 回答
1

请注意,HtmlUnitDriver webclient 是单线程的,而 Ghostdriver 仅占 WebDriver 功能的 40%。

尽管如此,Ghostdriver 可以正常运行以进行测试,但我无法将其连接到 WebDriver 集线器。

于 2012-08-07T09:43:22.517 回答
0

是的,您可以在没有浏览器的情况下运行测试脚本,但您应该在无头模式下运行它们。

于 2018-09-11T08:37:39.233 回答
0

也许你需要设置你的窗口大小尺寸。就像:</p>

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--window-size=1920x1080');

browser = webdriver.Chrome(options=options,executable_path = './chromedriver')

如果也不起作用,请尝试增加窗口大小尺寸。

于 2019-11-04T04:01:47.073 回答