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

2020-09-21 13:52发布

什么是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