Chrome 选项和所需功能 Selenium

⚡ 智能摘要

Chrome 选项和所需功能 Selenium WebDriver 控制 Chrome 浏览器在自动化测试期间的启动和行为。它们共同配置参数、扩展程序、SSL 处理和跨浏览器设置,使测试运行灵活、可重复且随时可用。 Selenium 网格执行。

  • 🌐 ChromeOptions: 使用诸如启动最大化、隐身和无头模式等参数自定义会话。
  • ⚙️ 所需能力: 设置浏览器名称、平台、版本和 SSL 证书接受情况。
  • 🧩 扩展: 通过自动化方式加载 CRX 文件,而不是手动安装。
  • 🕵️ 隐姓埋名且无头: 可重用代码为 CI 流水线运行私有或后台会话。
  • 🖥️ Selenium 网格: 该功能支持跨浏览器、分布式测试执行。
  • ⚠️ Selenium 4 年备注: DesiredCapabilities 已弃用;请直接将 ChromeOptions 传递给驱动程序。

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) Extract 与 CRX 文件对应的 AdBlock通过 http://crxex 进行扩展tractor.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);

Extract CRX 文件

以下步骤演示了过程trac通过网站上的广告拦截器打开 CRX 文件 – http://crxextractor.com/

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

Extract CRX 文件

步骤2) 引入 Chrome 扩展程序——广告拦截器 URL 在文本框下方。 URL Chrome网上应用商店中的Adblock是 https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

然后点击确定

Extract CRX 文件

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

Extract CRX 文件

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

样本 Code:

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

Extract 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("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

Code 说明:

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

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

输出:

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

Extract CRX 文件

除了加载扩展程序之外,ChromeOptions 还控制浏览器窗口本身的运行方式。

Chrome 隐身模式选项

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

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

样本 Code:

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("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

Code 说明:

  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 – https://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("https://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

Code 说明:

  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 – https://demo.guru99.com/ 到 driver.get 方法
  6. 打印页面标题并关闭浏览器

输出

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

无头 Chrome 的 Chrome 选项

常见问题

是的。 Selenium 4. 已弃用 DesiredCapabilities,转而使用浏览器选项类,例如 ChromeOptions。 Selenium 3 你将它们合并了;在 Selenium 4 直接将 ChromeOptions 传递给驱动程序。

调用 `addArguments` 方法时可以添加多个标志,例如,`options.addArguments` 并添加 `start-maximized` 和 `incognito` 标志。你也可以链式调用多个 `addArguments` 方法。每个参数都会自定义 Chrome 会话的启动方式。

addArguments 方法会将诸如 headless 或 incognito 之类的命令行标志传递给 Chrome。addExtensions 方法会将打包好的 .crx 扩展文件加载到会话中。两者都可以自定义行为,但用途不同。

是的。像 Copilot 这样的 AI 助手会生成 ChromeOptions 和功能设置,建议参数名称,并解释已弃用的 API。务必检查输出,因为标志名称和 Selenium 版本更新频繁。

AI 自愈工具能够自动更新参数、检测不稳定的标志位,并在 Chrome 升级后推荐稳定的替代方案。它们减少了无头运行的维护工作,并解决了 CI 环境中功能不匹配的问题。

是的。ChromeOptions 可以与 RemoteWebDriver 配合使用,实现 Grid 执行。您可以将这些选项附加到远程会话,从而使相同的配置能够在分布式机器和浏览器上运行。

这通常意味着 ChromeDriver 和 Chrome 浏览器版本不匹配。请安装匹配的 ChromeDriver,或使用 Selenium 经理在 Selenium 4. 自动解决驱动程序问题。

使用实验性选项:通过 setExperimentalOption 传递 download.default_directory 参数,创建一个 prefs 映射。这样,在自动化测试期间,Chrome 会自动将文件保存到该文件夹​​。

总结一下这篇文章: