Selenium是否支持无头浏览器测试?

时间:2011-09-27 12:12:11

标签: unit-testing selenium selenium-webdriver automated-tests headless-browser

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

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

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

12 个答案:

答案 0 :(得分:17)

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

from selenium import webdriver
dr = webdriver.PhantomJS() 

瞧。

答案 1 :(得分:15)

WebDriver API支持HTMLUnit作为测试的浏览器。 Ruby人一直在使用Capybara进行无头硒测试,所以它绝对可行。

答案 2 :(得分:10)

我知道这是一个老帖子。以为它会帮助那些正在寻找答案的人。

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

答案 3 :(得分:7)

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

答案 4 :(得分:6)

无头浏览器是一个坏主意。它们可以让您进行一些测试,但不会像真实用户看到的那样,并且它们会掩盖许多只有真正的浏览器遇到的问题。在无头环境(例如,Windows或Linux与XVFB)上使用“头脑”浏览器(即。,除了HTMLUnit之外的任何东西),你会好得多。

答案 5 :(得分:1)

是。 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);

答案 6 :(得分:0)

是的,selenium支持无头浏览器测试...但我发现HTMLUnit失败了很多次......我正在寻找另一种选择...... PhantomJs真的很好。你绝对可以尝试一下它比较快到其他浏览器......这对烟雾测试真的很好......

http://phantomjs.org/

答案 7 :(得分:0)

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

driver = Selenium::WebDriver.for :phantomjs

答案 8 :(得分:0)

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

与其他人描述的一样,PhantomJS并不是真正推荐的。 Selenium的重点是自动化浏览器。但为什么自动化浏览器没有人使用?我从未理解开发人员经常忽视这一点。

答案 9 :(得分: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说明] [1]。

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

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()

答案 10 :(得分:0)

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

答案 11 :(得分: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);
}