我目前正在关注Selenium Server,我似乎没有注意到支持无头浏览器测试的驱动程序。
除非我弄错了,否则它不支持它。如果你在X上,你可以创建一个虚拟帧缓冲区来隐藏浏览器窗口,但这不是真正的无头浏览器。
任何人都可以开导我吗? Selenium是否支持无头浏览器测试?
答案 0 :(得分:17)
您不需要使用PhantomJS作为Selenium的替代品。 Selenium包含一个PhantomJS webdriver类,它位于GhostDriver平台上。只需将PhantomJS二进制文件安装到您的机器上即可。在python中,您可以使用:
from selenium import webdriver
dr = webdriver.PhantomJS()
瞧。
答案 1 :(得分:15)
WebDriver API支持HTMLUnit作为测试的浏览器。 Ruby人一直在使用Capybara进行无头硒测试,所以它绝对可行。
答案 2 :(得分:10)
我知道这是一个老帖子。以为它会帮助那些正在寻找答案的人。
您可以使用XVFB在任何Linux发行版中安装完整的firefox。这可确保您的测试在真实的浏览器中执行。一旦你有无头设置,你可以使用你选择的webdriver连接并运行测试。
答案 3 :(得分:7)
我注意到你说使用X帧缓冲不是一个真正的无头解决方案,但是,对于大多数人来说,我认为这是可以接受的。除此之外,如果您对此感兴趣,this service将有助于您实现这一目标。
答案 4 :(得分:6)
无头浏览器是一个坏主意。它们可以让您进行一些测试,但不会像真实用户看到的那样,并且它们会掩盖许多只有真正的浏览器遇到的问题。在无头环境(例如,Windows或Linux与XVFB)上使用“头脑”浏览器(即。,除了HTMLUnit之外的任何东西),你会好得多。
答案 5 :(得分:1)
是。 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);
答案 6 :(得分:0)
是的,selenium支持无头浏览器测试...但我发现HTMLUnit失败了很多次......我正在寻找另一种选择...... PhantomJs真的很好。你绝对可以尝试一下它比较快到其他浏览器......这对烟雾测试真的很好......
答案 7 :(得分:0)
使用ruby和macOS:brew install phantomjs
然后:
driver = Selenium::WebDriver.for :phantomjs
答案 8 :(得分:0)
Selenium确实以某种方式支持无头浏览器测试。 Docker Selenium由SeleniumHQ维护。这些docker容器带有xvfb支持,开箱即用。 PhantomJS等工具可以与Selenium连接。但是,它没有得到Selenium本身的正式支持。
与其他人描述的一样,PhantomJS并不是真正推荐的。 Selenium的重点是自动化浏览器。但为什么自动化浏览器没有人使用?我从未理解开发人员经常忽视这一点。
答案 9 :(得分:0)
这是关于如何在运行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说明] [1]。
要使用刚刚安装的驱动程序,请执行以下操作:
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()
答案 10 :(得分:0)
是的Selenium支持无头浏览器测试。无头浏览器比实时浏览器更快。
答案 11 :(得分:0)
在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);
}