我目前正在研究Selenium Server,但似乎没有支持无头浏览器测试的驱动程序。
除非我弄错了,它不支持。如果您在X上,可以创建虚拟帧缓冲区以隐藏浏览器窗口,但那并不是真正的无头浏览器。
有人能启迪我一下吗?Selenium是否支持无头浏览器测试?
我目前正在研究Selenium Server,但似乎没有支持无头浏览器测试的驱动程序。
除非我弄错了,它不支持。如果您在X上,可以创建虚拟帧缓冲区以隐藏浏览器窗口,但那并不是真正的无头浏览器。
有人能启迪我一下吗?Selenium是否支持无头浏览器测试?
你不需要将PhantomJS作为Selenium的替代方案。Selenium包含一个基于GhostDriver平台的PhantomJS webdriver类。只需要在计算机上安装PhantomJS二进制文件即可。在Python中,然后可以使用以下代码:
from selenium import webdriver
dr = webdriver.PhantomJS()
大功告成。
WebDriver API支持使用HTMLUnit作为浏览器进行测试。Ruby开发者一直在使用Capybara进行无界面的Selenium测试,因此这是完全可行的。
我知道这是一篇旧文章。我认为它会帮助其他正在寻找答案的人。
您可以使用XVFB在任何Linux发行版中安装完整的Firefox浏览器。这确保了您的测试是在真正的浏览器中进行的。一旦您有了无头设置,您可以使用您选择的Webdriver连接并运行测试。
我注意到您说使用X framebuffer不是真正的无头解决方案,但对于大多数人来说,我认为这将是可接受的。此外,如果您对此解决方案感兴趣,这个服务将帮助您实现。
无头浏览器是一个不好的想法。它们可以为您提供一些测试,但远不及真正用户所看到的内容,并且掩盖了只有真正浏览器才会遇到的许多问题。在无头环境(如 Windows 或带有 XVFB 的 Linux)上使用“有头”浏览器(即除 HTMLUnit 之外的任何浏览器)要好得多。
就像其他人描述的那样,PhantomJS并不是真正推荐的。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);
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()
在 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);
}