Chrome 选项和所需功能 Selenium 网络驱动程序

什么是 Chrome 选项类?

这款 Chromeoptions 类 是一个概念 Selenium WebDriver 用于操作 Chrome 驱动程序的各种属性。Chrome 选项类通常与 Desired Capabilities 结合使用,以自定义 Chrome 驱动程序会话。它可以帮助您执行各种操作,例如以最大化模式打开 Chrome、禁用现有扩展程序、禁用弹出窗口等。

示例:

下面的示例展示了使用 ChromeOptions 类以最大化模式打开 Chrome 浏览器的方法。我们需要将 ChromeOptions 类的实例传递给 Web 驱动程序初始化。

ChromeOptions options = new ChromeOptions()
options.addArgument("start-maximized");
ChromeDriver driver = new ChromeDriver(options);

以下是 ChromeOptions 类的可用和最常用参数列表

  • 开始最大化:以最大化模式打开 Chrome
  • 隐身: 以隐身模式打开 Chrome
  • 无头: 以无头模式打开 Chrome
  • 禁用扩展:禁用 Chrome 浏览器上的现有扩展程序
  • 禁用弹出窗口阻止:禁用 Chrome 浏览器上显示的弹出窗口
  • 设为默认浏览器: 将 Chrome 设为默认浏览器
  • 版本:打印 Chrome 浏览器版本
  • 禁用信息栏: 阻止 Chrome 显示“Chrome 正受到自动化软件控制”通知

所需功能类

所需功能类别 用于修改 Web 驱动程序的多个属性。它提供键值对来更改 Web 驱动程序的单个属性,例如浏览器名称、浏览器平台等。Desired Capabilities 类的一个常用方法是 setCapability 方法。它主要用于 Selenium 网格,需要在不同的浏览器上执行相同的测试用例。

示例:

下面的示例展示了如何使用 Chrome 类的 Desired Capabilities 让 Chrome 浏览器默认在网站上接受 SSL 证书。

// Create an object of desired capabilities class with Chrome driver
DesiredCapabilities SSLCertificate = DesiredCapabilities.chrome();
// Set the pre defined capability – ACCEPT_SSL_CERTS value to true
SSLCertificate.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
// Open a new instance of chrome driver with the desired capability
WebDriver driver = new ChromeDriver(SSLCertificate);

以下是最常用的预定义功能类型。

能力名称 描述
接受 SSL 证书 此属性告诉浏览器默认接受 SSL 证书
平台名称 此属性用于设置访问网站的操作系统平台
浏览器名称 此属性用于设置 Web 驱动程序实例的浏览器名称
VERSION 此属性用于设置浏览器版本

Chrome 上的 Adblocker 扩展程序选项

Chrome 浏览器的 Adblocker 扩展可以使用 ChromeDriver Options 和 Desired Capabilities 类来处理。以下是访问的步骤 AdBlock使用 Desired Capabilities 类在 Chrome 浏览器上安装 er 扩展。

步骤1) AdBlock在使用 Chrome Options 类之前,必须在 Chrome 浏览器上安装 er 扩展程序

步骤2) 提取对应的 CRX 文件 AdBlock通过 http://crxextractor.com/ 进行扩展

步骤3) 将下载的 CRX 文件路径传递给 Chrome Options 类

步骤4) 使用所需的功能类和 Chrome 选项实例化 Web 驱动程序 Selenium 对象

示例:

下面的示例演示了如何使用 Chrome 选项和所需功能类在 Chrome 浏览器上激活广告拦截器扩展。

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("Path to CRX File"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

提取 CRX 文件

以下步骤演示了通过网站通过 Ad Blocker 提取 CRX 文件的过程 - http://crxextractor.com/

步骤1) 在MyCAD中点击 软件更新 http://crxextractor.com/ 然后点击开始按钮

提取 CRX 文件

步骤2) 在文本框下输入 Chrome 扩展程序 - Ad Blocker URL。Chrome 网上应用店中的 Adblock 网址为 https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

然后点击确定

提取 CRX 文件

步骤3) 点击确定按钮后,按钮标签将变为获取 .CRX,如下所示。点击获取 .CRX 按钮,将下载与扩展名对应的 CRX 文件

提取 CRX 文件

步骤4) 将文件保存到本地机器上,记下保存的路径。下一步是将保存的路径传递给 Chrome Options 类

示例代码:

  1. 您将在以下位置看到广告 http://demo.guru99.com/ 如下

提取 CRX 文件

  1. 通过 AdBlockChrome 浏览器广告上启用的 er 扩展程序应被禁用
package adblock;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class AdblockDemo {
public static void main(String[] args)  {
	
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");		
	ChromeOptions options = new ChromeOptions();
	options.addExtensions(new File("X://extension_3_40_1_0.crx")); 
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);
	driver.get("http://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

代码说明:

  1. 首先,您需要使用设置属性方法设置 chromedriver.exe 文件的路径,因为您使用 Chrome 浏览器进行测试
  2. 您需要设置 CRX 文件的路径才能添加扩展方法
  3. 然后你需要在中创建一个 Chrome Desired Capabilities 对象 Selenium 类并将其传递给 Web 驱动程序实例。从 Selenium 3.8.1 版本,驱动程序功能类已被弃用,您需要将功能对象与 Chrome Options 对象合并,然后将其作为参数传递给 Chrome Driver 构造函数
  4. 打开 URL – http://demo.guru99.com/test/simple_context_menu.html 启用广告拦截器扩展程序
  5. 最大化并关闭浏览器

注意: 我们正在实现 AdBlock扩展 在 Chrome 浏览器上通过自动化脚本访问广告拦截器扩展程序,而无需在 Chrome 浏览器上手动启用广告拦截器扩展程序。CRX 文件是一种使用自动化脚本访问广告拦截器扩展程序的方法

输出:

Chrome 浏览器将启用 AdBlock扩展程序已启用,如下所示,没有任何广告

提取 CRX 文件

Chrome 隐身模式选项

Chrome 选项可以通过使用预定义参数来实现隐身模式 -匿名.

下面是完成相同操作的示例代码。

示例代码:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Incognito{
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
	ChromeOptions options = new ChromeOptions();
	options.addArguments("--incognito");
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);		
	driver.get("http://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

代码说明:

  1. 首先,您需要使用设置属性方法设置 chromedriver.exe 文件的路径,因为您使用 Chrome 浏览器进行测试
  2. 然后您需要创建一个 Chrome Options 类的对象并将其传递给 Web 驱动程序实例。由于我们想以隐身模式打开 Chrome 浏览器,因此您需要将参数 –incognito 传递给 Chrome Options 类。
  3. 接下来,创建 Desired Capabilities 类的对象,并使用合并方法将 Desired Capabilities 类对象与 Chrome Options 类对象合并
  4. 您需要创建 Chrome Driver 类的对象并将 Chrome Options 对象作为参数传递
  5. 最后,我们需要传递 URL – http://demo.guru99.com/test/simple_context_menu.html 到 driver.get 方法
  6. 最大化并关闭浏览器

输出:

Chrome 浏览器窗口将以隐身模式打开,如下所示

Chrome 隐身模式选项

Headless Chrome 的 Chrome 选项

无头浏览器在后台运行。您将看不到浏览器 GUI 或对其进行的操作。

在无头模式下运行 Chrome 浏览器的 Chrome 选项可以通过使用预定义参数来实现 -无头.

下面提到了实现该操作的示例代码。

示例:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class HeadlessModeDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
		ChromeOptions options = new ChromeOptions();
		options.addArguments("--headless");
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(ChromeOptions.CAPABILITY, options);
		options.merge(capabilities);
		ChromeDriver driver = new ChromeDriver(options);		
		driver.get("http://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

代码说明:

  1. 首先,您需要使用设置属性方法设置 chromedriver.exe 文件的路径,因为您使用 Chrome 浏览器进行测试
  2. 接下来,创建 Chrome Options 类的对象并将其传递给 Web 驱动程序实例。由于我们想以无头模式打开 Chrome 浏览器,因此我们需要将参数 –headless 传递给 Chrome Options 类。
  3. 创建 DesiredCapabilities Chrome 类的对象,并使用合并方法将 Desired Capabilities 类对象与 Chrome Options 类对象合并
  4. 创建 Chrome 驱动程序类的对象并传递 Chrome 选项 Selenium 对象作为参数
  5. 最后,我们需要传递 URL – http://demo.guru99.com/ 到 driver.get 方法
  6. 打印页面标题并关闭浏览器

输出

由于 Chrome 将在 Headless 模式下运行,因此浏览器将无法看到上述代码。页面标题将被提取并显示如下。

无头 Chrome 的 Chrome 选项

总结

  • Selenium Chrome Options 类用于操作 Chrome 驱动程序的各种属性
  • 所需的 Chrome 功能类提供了一组键值对,用于修改 Web 驱动程序的各个属性,例如浏览器名称、浏览器平台等。
  • 要操作 Chrome 浏览器的任何扩展程序,必须提取与扩展程序对应的 CRX 文件,并将其添加到 Chrome 选项类中
  • –incognito 和 –headless 是 Chrome Options 类提供的预定义参数,用于在隐身模式和无头模式下使用 Chrome 浏览器