我目前正在查看 Selenium Server,我似乎没有注意到支持无头浏览器测试的驱动程序。
除非我弄错了,否则它不支持它。如果您在 X 上,您可以创建一个虚拟帧缓冲区来隐藏浏览器窗口,但这并不是真正的无头浏览器。
任何人都可以启发我吗?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 进行无头硒测试已经有一段时间了,所以它绝对是可行的。
我知道这是一个旧帖子。认为它会帮助其他正在寻找答案的人。
您可以使用 XVFB 在任何 linux 发行版中安装完整的 firefox。这可以确保您的测试是在真实的浏览器中执行的。一旦你有一个无头设置,你可以使用你选择的 webdriver 来连接和运行测试。
无头浏览器是个坏主意。它们为您提供一些测试,但与真实用户所看到的完全不同,它们掩盖了许多只有真实浏览器才会遇到的问题。在无头环境(例如,Windows 或带有 XVFB 的 Linux )上使用“有头”浏览器(即除了 HTMLUnit 之外的任何东西)会更好。
我注意到您说使用 X 帧缓冲区并不是真正的无头解决方案,但是,对于大多数人来说,我认为这是可以接受的。除此之外,如果您对此解决方案感兴趣,这项服务将帮助您实现这一目标。
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 真的很棒。你绝对可以试一试它与其他浏览器相比非常快...烟雾测试真的很好...
使用 ruby 和 macOS:brew install phantomjs
然后:
driver = Selenium::WebDriver.for :phantomjs
这是关于如何在运行 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()
是的,Selenium 支持无头浏览器测试。无头浏览器比实时浏览器更快。
在 linux 服务器上安装chromeDriver
和google-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);
}