什么是Headless模式?
在Selenium领域,Headless模式指的是在不启动浏览器,看不到界面GUI的情况下,来运行Selenium的脚本,执行测试。
Headless模式的好处:
- 不启动浏览器弹窗,在本机上执行时不会干扰你的其它操作。
- 在不关心GUI界面时,headless模式可以提升执行效率。不关心界面的场景,比如造数据、爬数据。
- 有些系统不提供GUI界面,只能用Headless模式
Headless的不足:
- 同样的脚本,Headless模式运行结果可能会与正常启动浏览器的运行结果不同
- 不太适用于关注GUI的测试。
怎样实现Headless模式呢?
从Selenium V3.6开始,Selenium在Options类中提供了一个setHeadless()的方法,通过调用这个方法我们可以轻松实现让脚本运行在Headless模式下。
Selenium启动Chrome Headless模式:
package learnwebdriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class ChromeHeadless {
public static void main(String[] args) {
// 指定chrome driver的获取地址
System.setProperty("webdriver.chrome.driver", "D:\\BrowserDriver\\chromedriver.exe");
//设置chrome headless模式为true
ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
//实例化webdriver的对象,以headless模式启动谷歌浏览器
WebDriver driver = new ChromeDriver(options);
//通过对象driver调用具体的get方法来打开网页
driver.get("http://www.baidu.com/");
//最大化浏览器窗口
driver.manage().window().maximize();
//打印网页标题
System.out.println(driver.getTitle());
//退出浏览器
driver.quit();
}
}
在Eclipse中运行此脚本,就会看到谷歌浏览器没有启动,但是控制台不断有日志输出,还打印输出了百度的标题信息。
Selenium启动Firefox Headless模式:
下面只给出关键脚本步骤,可以替换上面例子中的脚本来以火狐的headless模式访问百度
//设置火狐Headless模式为true
FirefoxOptions options = new FirefoxOptions();
options.setHeadless(true);
//以Headless模式启动火狐浏览器(默认安装)
WebDriver driver = new FirefoxDriver(options);
有需要用到Headless模式的可以参考一下。
********************************************************************************************************
近期我会在博客中系统的更新一些关于Selenium的文章,也请大家多多关注下我的视频课程:
入门:基于Java的Selenium3自动化测试完整教程
高级:Selenium Java高级架构课程
*********************************************************************************************************
阅读更多精彩文章,请大家关注我的测试公众号:火烈鸟测试