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



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

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

有谁能开导我一下吗?Selenium支持无头浏览器测试吗?

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

from selenium import webdriver
dr = webdriver.PhantomJS() 

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

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

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

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

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

Selenium在某种程度上确实支持无头浏览器测试。Docker Selenium由SeleniumHQ维护。这些docker容器都具有现成的xvfb支持。有像PhantomJS这样的工具可以与Selenium连接起来。但是,Selenium本身并没有正式支持它。

就像其他人描述的那样,不推荐使用PhantomJS。Selenium的全部意义在于实现浏览器的自动化。但是为什么要自动化一个没人用的浏览器呢?我一直不明白为什么开发人员经常忽视这一点。

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

是的,selenium支持无头浏览器测试…但是我发现HTMLUnit大多数时候都失败了…我在寻找另一种选择……《PhantomJs》真的很棒。你绝对可以尝试一下,与其他浏览器相比,它的速度非常快……它真的很适合烟雾测试…

http://phantomjs.org/

使用ruby和macOS: brew install phantomjs then:

driver = Selenium::WebDriver.for :phantomjs

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

在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);
}

关于如何在运行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()

最新更新