我现在正在看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服务器上安装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()