我目前正在查看Selenium Server,但似乎没有注意到支持无头浏览器测试的驱动程序。
除非我弄错了,否则它不支持。如果您使用的是X,则可以创建一个虚拟的帧缓冲区来隐藏浏览器窗口,但这并不是真正的无头浏览器。
谁能启发我?Selenium是否支持无头浏览器测试?
Answers:
您无需使用PhantomJS来替代Selenium。Selenium包括一个在GhostDriver平台上运行的PhantomJS Webdriver类。只需将PhantomJS二进制文件安装到您的计算机即可。在python中,您可以使用:
from selenium import webdriver
dr = webdriver.PhantomJS()
和瞧。
--headless
标记,不再支持PhantomJS
WebDriver API支持HTMLUnit作为测试的浏览器。Ruby人们已经使用Capybara进行无头硒测试已有一段时间了,因此它绝对是可行的。
无头浏览器是个坏主意。它们为您提供了一些测试,但是却没有真正的用户所看到的东西,并且它们掩盖了只有真正的浏览器才会遇到的许多问题。在无头环境(例如Windows或具有XVFB的Linux )上使用“带头”的浏览器(即HTMLUnit以外的任何东西),您将获得无限的收益。
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);
是的,硒支持无头浏览器测试...但是我发现HTMLUnit大多数时候都失败了...我正在寻找替代方法... PhantomJs真的很棒。与其他浏览器相比,您绝对可以尝试一下它非常快对烟雾测试真的很好
在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);
}
这是关于如何在运行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()