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/ 然后点击开始按钮
步骤2) 在文本框下输入 Chrome 扩展程序 - Ad Blocker URL。Chrome 网上应用店中的 Adblock 网址为 https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom
然后点击确定
步骤3) 点击确定按钮后,按钮标签将变为获取 .CRX,如下所示。点击获取 .CRX 按钮,将下载与扩展名对应的 CRX 文件
步骤4) 将文件保存到本地机器上,记下保存的路径。下一步是将保存的路径传递给 Chrome Options 类
示例代码:
- 您将在以下位置看到广告
http://demo.guru99.com/
如下
- 通过 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(); } }
代码说明:
- 首先,您需要使用设置属性方法设置 chromedriver.exe 文件的路径,因为您使用 Chrome 浏览器进行测试
- 您需要设置 CRX 文件的路径才能添加扩展方法
- 然后你需要在中创建一个 Chrome Desired Capabilities 对象 Selenium 类并将其传递给 Web 驱动程序实例。从 Selenium 3.8.1 版本,驱动程序功能类已被弃用,您需要将功能对象与 Chrome Options 对象合并,然后将其作为参数传递给 Chrome Driver 构造函数
- 打开 URL –
http://demo.guru99.com/test/simple_context_menu.html
启用广告拦截器扩展程序 - 最大化并关闭浏览器
注意: 我们正在实现 AdBlock扩展 在 Chrome 浏览器上通过自动化脚本访问广告拦截器扩展程序,而无需在 Chrome 浏览器上手动启用广告拦截器扩展程序。CRX 文件是一种使用自动化脚本访问广告拦截器扩展程序的方法
输出:
Chrome 浏览器将启用 AdBlock扩展程序已启用,如下所示,没有任何广告
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(); } }
代码说明:
- 首先,您需要使用设置属性方法设置 chromedriver.exe 文件的路径,因为您使用 Chrome 浏览器进行测试
- 然后您需要创建一个 Chrome Options 类的对象并将其传递给 Web 驱动程序实例。由于我们想以隐身模式打开 Chrome 浏览器,因此您需要将参数 –incognito 传递给 Chrome Options 类。
- 接下来,创建 Desired Capabilities 类的对象,并使用合并方法将 Desired Capabilities 类对象与 Chrome Options 类对象合并
- 您需要创建 Chrome Driver 类的对象并将 Chrome Options 对象作为参数传递
- 最后,我们需要传递 URL –
http://demo.guru99.com/test/simple_context_menu.html
到 driver.get 方法 - 最大化并关闭浏览器
输出:
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(); } }
代码说明:
- 首先,您需要使用设置属性方法设置 chromedriver.exe 文件的路径,因为您使用 Chrome 浏览器进行测试
- 接下来,创建 Chrome Options 类的对象并将其传递给 Web 驱动程序实例。由于我们想以无头模式打开 Chrome 浏览器,因此我们需要将参数 –headless 传递给 Chrome Options 类。
- 创建 DesiredCapabilities Chrome 类的对象,并使用合并方法将 Desired Capabilities 类对象与 Chrome Options 类对象合并
- 创建 Chrome 驱动程序类的对象并传递 Chrome 选项 Selenium 对象作为参数
- 最后,我们需要传递 URL –
http://demo.guru99.com/
到 driver.get 方法 - 打印页面标题并关闭浏览器
输出
由于 Chrome 将在 Headless 模式下运行,因此浏览器将无法看到上述代码。页面标题将被提取并显示如下。
总结
- Selenium Chrome Options 类用于操作 Chrome 驱动程序的各种属性
- 所需的 Chrome 功能类提供了一组键值对,用于修改 Web 驱动程序的各个属性,例如浏览器名称、浏览器平台等。
- 要操作 Chrome 浏览器的任何扩展程序,必须提取与扩展程序对应的 CRX 文件,并将其添加到 Chrome 选项类中
- –incognito 和 –headless 是 Chrome Options 类提供的预定义参数,用于在隐身模式和无头模式下使用 Chrome 浏览器