我现在正在查看 Selenium Server,我似乎没有注意到一个支持无头浏览器测试的驱动程序。
除非我弄错了,它不支持。如果你在 X 上,你可以创建一个虚拟框架缓冲区来隐藏浏览器窗口,但这并不是一个真正的无头浏览器。
有人能告诉我吗? Selenium 支持无头浏览器测试吗?
WebDriver API 支持将 HTMLUnit 作为测试的浏览器。Ruby 用户使用 Capybara 进行无头硒测试已经有一段时间了,所以这绝对是可行的。
无头浏览器是个坏主意。它们可以让你进行 一些测试,但是和真正的用户看到的完全不同,而且它们掩盖了许多只有 真的浏览器才会遇到的问题。在无头环境(例如:。、 Windows 或者带有 XVFB 的 Linux)上使用“头部”浏览器(也就是说。,除了 HTMLUnit 之外的任何浏览器)要好得多。
我注意到您说过使用 X framebuffer 并不是一个真正的无头解决方案,但是,对于大多数人来说,我认为这是可以接受的。除此之外,如果您对 这项服务作为解决方案感兴趣,这项服务将帮助您实现这一点。
我知道这是一个很老的帖子,我想它会帮助那些寻找答案的人。
您可以使用 XVFB 在任何 Linux 发行版中安装完整的 Firefox。这可以确保您的测试是在真正的浏览器中执行的。一旦你有一个无头设置,你可以使用你选择的网络驱动程序来连接和运行测试。
是的,selenium 支持无头浏览器测试... 但是我发现大多数时候 HTMLUnit 都失败了... 我正在寻找替代品... PhantomJs 真的很好。你可以试一下它相对于其他浏览器来说非常快... 它真的很适合冒烟测试..。
Http://phantomjs.org/
您不需要使用 PhantomJS 作为 Selenium 的替代品。Selenium 包含一个 PhantomJS 网络驱动程序类,它搭载在 GhostDriver 平台上。只需将 PhantomJS 二进制文件安装到您的机器上。在 python 中,您可以使用:
from selenium import webdriver dr = webdriver.PhantomJS()
瞧。
然后,使用 Ruby 和 macOS: brew install phantomjs:
brew install phantomjs
driver = Selenium::WebDriver.for :phantomjs
Selenium 在某种程度上确实支持无头浏览器测试。Docker Selenium由 SeleniumHQ 维护。这些码头容器带有 xvfb 支持,并且开箱即用。有一些像 PhantomJS 这样的工具可以与 Selenium 连接起来。然而,官方并不支持 Selenium 本身。
Much like what others have described, PhantomJS isn't really recommended. The whole point of Selenium is to automate browsers. But why automate a browser no one uses? I never understood how that was overlooked so often by developers..
是的,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);
这里有一个关于如何在运行 Django/Python 的 Ubuntu Linux 环境中使用 xvfb 和 Firefox 驱动程序的 Selenium 的“现代答案”:
# 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版本,测试将在其中触发,并在代码中添加相同的二进制文件。
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); }