什么是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模式为trueFirefoxOptions options = new FirefoxOptions();options.setHeadless(true); //以Headless模式启动火狐浏览器(默认安装)WebDriver driver = new FirefoxDriver(options);
有需要用到Headless模式的可以参考一下。
文章来源:CSDN 作者:YOYO测试
来源地址:https://blog.csdn.net/yoyocat915/article/details/80715299