73

我目前正在查看 Selenium Server,我似乎没有注意到支持无头浏览器测试的驱动程序。

除非我弄错了,否则它不支持它。如果您在 X 上,您可以创建一个虚拟帧缓冲区来隐藏浏览器窗口,但这并不是真正的无头浏览器。

任何人都可以启发我吗?Selenium 是否支持无头浏览器测试?

4

12 回答 12

19

你不需要使用 PhantomJS 作为 Selenium 的替代品。Selenium 包含一个 PhantomJS webdriver 类,它位于 GhostDriver 平台上。只需将 PhantomJS 二进制文件安装到您的机器上。在python中,您可以使用:

from selenium import webdriver
dr = webdriver.PhantomJS() 

瞧。

于 2015-02-06T18:32:54.163 回答
15

WebDriver API 支持 HTMLUnit 作为您的测试浏览器。Ruby 人使用 Capybara 进行无头硒测试已经有一段时间了,所以它绝对是可行的。

于 2011-09-27T12:26:48.133 回答
11

我知道这是一个旧帖子。认为它会帮助其他正在寻找答案的人。

您可以使用 XVFB 在任何 linux 发行版中安装完整的 firefox。这可以确保您的测试是在真实的浏览器中执行的。一旦你有一个无头设置,你可以使用你选择的 webdriver 来连接和运行测试。

于 2013-07-29T04:03:33.850 回答
7

无头浏览器是个坏主意。它们为您提供一些测试,但与真实用户所看到的完全不同,它们掩盖了许多只有真实浏览器才会遇到的问题。在无头环境(例如,Windows 或带有 XVFB 的 Linux )上使用“有头”浏览器(除了 HTMLUnit 之外的任何东西)会更好。

于 2011-09-27T18:19:29.483 回答
7

我注意到您说使用 X 帧缓冲区并不是真正的无头解决方案,但是,对于大多数人来说,我认为这是可以接受的。除此之外,如果您对此解决方案感兴趣,这项服务将帮助您实现这一目标。

于 2012-07-30T01:10:47.917 回答
2

Selenium 确实以某种方式支持无头浏览器测试。Docker Selenium由 SeleniumHQ 维护。这些 docker 容器开箱即用,带有 xvfb 支持。有像 PhantomJS 这样的工具可以与 Selenium 连接。但是,Selenium 本身并未正式支持它。

就像其他人所描述的那样,PhantomJS 并不是真正推荐的。Selenium 的全部意义在于使浏览器自动化。但是,为什么要自动化没有人使用的浏览器呢?我从来不明白开发人员如何经常忽视这一点..

于 2017-04-18T02:55:00.487 回答
2

是的。Selenium 支持无头浏览器测试,并且对于大量测试用例的执行速度更快、更方便。

ChromeOptions cromeOptions = new ChromeOptions();

//Location of browser binary/.exe file
cromeOptions.setBinary("/usr/bin/google-chrome-stable");

cromeOptions.addArguments("--headless");
cromeOptions.addArguments("--no-sandbox");
cromeOptions.addArguments("--disable-gpu");
cromeOptions.addArguments("--window-size=1920,1080");

WebDriver webDriver = new ChromeDriver(cromeOptions);
于 2018-03-13T17:50:18.747 回答
0

是的,selenium 支持无头浏览器测试...但我发现 HTMLUnit 大部分时间都失败了...我正在寻找替代方案...PhantomJs 真的很棒。你绝对可以试一试它与其他浏览器相比非常快...烟雾测试真的很好...

http://phantomjs.org/

于 2015-02-06T17:55:22.260 回答
0

使用 ruby​​ 和 macOS:brew install phantomjs然后:

driver = Selenium::WebDriver.for :phantomjs
于 2016-10-09T02:40:34.547 回答
0

这是关于如何在运行 Django/Python 的 Ubuntu Linux 环境中将 Selenium 与 xvfb 和 Firefox 驱动程序一起使用的“现代答案”:

# install xvfb and Firefox driver
sudo su
apt-get install -y xvfb firefox
wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-linux64.tar.gz
tar -x geckodriver -zf geckodriver-v0.19.1-linux64.tar.gz -O > 
/usr/bin/geckodriver
chmod +x /usr/bin/geckodriver

# install pip modules
pip install selenium
pip install PyVirtualDisplay

然后,您可以按照Django LiveServerTestCase 说明进行操作

要使用刚刚安装的驱动程序,请执行以下操作:

from pyvirtualdisplay import Display
from selenium.webdriver.firefox.webdriver import WebDriver

driver = WebDriver(executable_path='/usr/bin/geckodriver')
display = Display(visible=0, size=(800, 600)).start()

# add your testing classes here...

driver.quit()
display.stop()
于 2018-03-18T19:34:48.377 回答
0

是的,Selenium 支持无头浏览器测试。无头浏览器比实时浏览器更快。

于 2018-05-09T09:11:12.147 回答
0

在 linux 服务器上安装chromeDrivergoogle-chrome-stable版本,将触发测试并在代码中添加相同的二进制文件。

代码片段:

private static String driverPath = "/usr/bin/chromedriver";
static
{
    System.setProperty("webdriver.chrome.driver", driverPath);
    options = new ChromeOptions();
    options.setBinary("/usr/bin/google-chrome-stable");
    options.addArguments("headless");
    driver = new ChromeDriver(options);
}
于 2019-02-18T11:47:24.570 回答