使用Chrome和Firefox的Headless模式运行Selenium脚本

匿名 (未验证) 提交于 2019-12-03 00:28:02

什么是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 Java自动化测试完整教程

*****************************************************************************************************







易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!