• Selenium Video Tutorials

Selenium WebDriver - Chrome 选项



ChromeOptions 是 Selenium WebDriver 中的一个特定类,用于处理仅适用于 Chrome 驱动的选项。它有助于在 Chrome 上运行自动化测试时修改浏览器的设置和功能。ChromeOptions 类扩展了另一个称为 MutableCapabilities 的类。

ChromeOptions 类从 Selenium 3.6 版本开始添加。Selenium WebDriver 默认情况下以全新的浏览器配置文件开始,没有任何预定义的 Cookie、历史记录等设置。

使用 ChromeOptions 添加 Chrome 扩展程序

让我们来看一个例子,我们将使用 Selenium IDE 扩展程序打开 Chrome 浏览器。Chrome 扩展程序应该具有 .crx 文件。在本例中,我们将获取 Selenium IDE Chrome 扩展程序的 .crx 文件,并将其放置在测试项目中的 Resources 文件夹下。

Selenium Chrome Options 1

示例

package org.example;

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.io.File;
import java.util.concurrent.TimeUnit;

public class ChromeOptnsExtension {
   public static void main(String[] args) throws InterruptedException {

      // object of ChromeOptions
      ChromeOptions opt = new ChromeOptions();

      // adding .crx extension
      opt.addExtensions(new File("./Resources/SeleniumIDE.crx"));

      // Initiate the Webdriver
      WebDriver driver = new ChromeDriver(opt);

      // adding implicit wait of 15 secs
      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

      // Opening the webpage with Selenium IDE extension
      driver.get("https://tutorialspoint.com/selenium/practice/register.php");

   }
}

输出

Process finished with exit code 0
Selenium Chrome Options 2

Chrome 浏览器已打开 Selenium IDE 扩展程序,并显示信息栏 **Chrome is being controlled by automated test software**。

使用 ChromeOptions 禁用信息栏

在前面的示例中,我们获得了一个包含文本 **Chrome is being controlled by automated test software** 的信息栏,但是我们可以使用 ChromeOptions 类禁用此信息栏。

示例

package org.example;

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.io.File;
import java.util.Collections;
import java.util.concurrent.TimeUnit;

public class ChromeOptns {
   public static void main(String[] args) throws InterruptedException {

      // object of ChromeOptions
      ChromeOptions opt = new ChromeOptions();

      // adding .crx extensions
      opt.addExtensions(new File("./Resources/SeleniumIDE.crx"));

      // disable information bar
      opt.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));

      // Initiate the Webdriver
      WebDriver driver = new ChromeDriver(opt);

      // adding implicit wait of 15 secs
      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

      // Opening the webpage with disabling information bar
      driver.get("https://tutorialspoint.com/selenium/practice/register.php");
   }
}

输出

Process finished with exit code 0
Selenium Chrome Options 3

Chrome 浏览器已启动 Selenium IDE 扩展程序,没有信息栏。

使用 ChromeOptions 打开最大化浏览器

在本例中,我们将以最大化模式在 Chrome 浏览器中打开并启动应用程序。

示例

package org.example;

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.io.File;
import java.util.Collections;
import java.util.concurrent.TimeUnit;

public class ChromeOptnsMaximized {
   public static void main(String[] args) throws InterruptedException {

      // object of ChromeOptions
      ChromeOptions opt = new ChromeOptions();

      // adding .crx extensions
      opt.addExtensions(new File("./Resources/SeleniumIDE.crx"));

      // disable information bar
      opt.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));

      // open browser in maximized
      opt.addArguments("--start-maximized");

      // Initiate the Webdriver
      WebDriver driver = new ChromeDriver(opt);

      // adding implicit wait of 15 secs
      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);

      // Opening the webpage with Selenium IDE extension
      driver.get("https://tutorialspoint.com/selenium/practice/register.php");

      // quitting browser
      driver.quit();
   }
}

输出

Process finished with exit code 0

在上面的示例中,我们观察到 Chrome 浏览器已启动 Selenium IDE 扩展程序,在最大化浏览器中没有信息栏 **Chrome is being controlled by automated test software**。

使用 ChromeOptions 处理 SSL 证书

要在 Chrome 中处理 SSL 证书,可以使用 ChromeOptions 类和 DesiredCapabilities 类。要使 DesiredCapabilities 的功能可用于 ChromeOptions,可以使用 merge 方法。

示例

package org.example;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.concurrent.TimeUnit;

public class SSLErrorInChrome {
   public static void main(String[] args) throws InterruptedException {
   
      // Desired Capabilities class to profile Chrome
      DesiredCapabilities dc = new DesiredCapabilities();
      dc.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
      
      // Chrome Options class
      ChromeOptions opt = new ChromeOptions();
      
      // merging browser capabilities with options
      opt.merge(dc);
      
      // Initiate the Webdriver with options
      WebDriver driver = new ChromeDriver(opt);
      
      // adding implicit wait of 12 secs
      driver.manage().timeouts().implicitlyWait(12, TimeUnit.SECONDS);
      
      // launch application 
      driver.get("https://expired.badssl.com");
      
      // obtain browser title
      System.out.println("Browser title in Chrome: " + driver.getTitle());
      
      // quit the browser
      driver.quit();
   }
}

输出

Browser title in Chrome: Privacy error

结论

本教程全面介绍了 Selenium WebDriver Chrome 选项。我们首先描述了 ChromeOptions 类,然后逐步讲解了如何向 Chrome 浏览器添加扩展程序、如何禁用信息栏、如何最大化浏览器以及如何在 Selenium WebDriver 和 ChromeOptions 的帮助下处理 SSL 证书错误。这使您能够深入了解 Selenium WebDriver 中的 ChromeOptions 类。明智的做法是继续练习您所学的内容,并探索与 Selenium 相关的其他内容,以加深您的理解并拓宽您的视野。

广告