Selenium 简明教程

Selenium - SSL Certificate Error

使用 Selenium Webdriver 可以处理 SSL 证书错误。SSL 是用于在浏览器和服务器之间创建连接的标准化协议。通过 SSL 证书交换的信息已加密,并且它可以验证信息是否发送到正确的服务器。它对网站进行身份验证并提供免遭黑客入侵的保护。如果 SSL 证书有问题,将会抛出一个不受信任的 SSL 证书错误。我们在启动应用程序时应当收到此类错误。

Selenium Webdriver 具有 DesiredCapabilities 类来限定浏览器配置文件。Combined with Option 类的 DesiredCapabilities 类可以用于在 Selenium Webdriver 中处理不同浏览器中的 SSL 证书错误。下图显示了一个错误示例,该错误是通过在 Safari 浏览器中打开以下 URL 获得的: https://expired.badssl.com/

selenium ssl certificate error 1

Chrome Browser

要处理 Chrome 中的 SSL 证书,我们必须将 ChromeOptions 类与 DesiredCapabilities 类配合使用。Chrome 中显示的 SSL 错误是 Your connection is not private

Code Implementation

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 SSLErrorChrome {
   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();
      opt.merge(dc);

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

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

      // launch application with SSL error
      driver.get("https://expired.badssl.com");

      // get browser title
      System.out.println("Browser title in Chrome: " + driver.getTitle());

      // quiting the browser
      driver.quit();
   }
}
Browser title in Chrome: Privacy error

在上述示例中,我们在 Chrome 中处理了 SSL 证书错误并启动了应用程序,然后使用控制台中的消息获取了浏览器标题 - Browser title in Chrome: Privacy error

Firefox Browser

要处理 Firefox 中的 SSL 证书,我们必须将 FirefoxOptions 类与 DesiredCapabilities 类配合使用。Firefox 中显示的 SSL 错误是 Warning: Potential Security Risk Ahead

Code Implementation

package org.example;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.concurrent.TimeUnit;

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

      // Desired Capabilities class to profile Firefox
      DesiredCapabilities dc = new DesiredCapabilities();
      dc.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);

      // Firefox Options class
      FirefoxOptions opt = new FirefoxOptions();
      opt.merge(dc);

      // Initiate the Webdriver with options
      WebDriver driver = new FirefoxDriver(opt);

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

      // launch application with SSL error
      driver.get("https://expired.badssl.com");

      // get browser title
      System.out.println("Browser title in Firefox: " + driver.getTitle());

      // quitting the browser
      driver.quit();
   }
}
Browser title in Firefox: Privacy error

在上述示例中,我们在 Firefox 中处理了 SSL 证书错误并启动了应用程序,然后使用控制台中的消息获取了浏览器标题 - Browser title in Firefox: Privacy error

Edge Browser

要处理 Edge 中的 SSL 证书,我们必须将 EdgeOptions 类与 DesiredCapabilities 类配合使用。Edge 中显示的 SSL 错误是 Your connection isn’t private

Code Implementation

package org.example;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.EdgeDriver;
import org.openqa.selenium.firefox.EdgeOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.concurrent.TimeUnit;

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

      // Desired Capabilities class to profile Edge
      DesiredCapabilities dc = new DesiredCapabilities();

      // Desired Capabilities class to profile Edge
      DesiredCapabilities dc = new DesiredCapabilities();
      dc.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);

      // Edge Options class
      EdgeOptionsOptions opt = new EdgeOptions();
      opt.merge(dc);

      // Initiate the Webdriver with options
      WebDriver driver = new EdgeDriver(opt);

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

      // launch application with SSL error
      driver.get("https://expired.badssl.com");

      // get browser title
      System.out.println("Browser title in Edge: " + driver.getTitle());

      // quitting the browser
      driver.quit();
   }
}
Browser title in Edge: Privacy error

在上述示例中,我们在 Edge 中处理了 SSL 证书错误并启动了应用程序,然后使用控制台中的消息获取了浏览器标题 - Browser title in Edge: Privacy error

Safari Browser

要处理 Safari 中的 SSL 证书,我们必须将 SafariOptions 类与 DesiredCapabilities 类配合使用。Safari 中显示的 SSL 错误是 This connection is not private

Code Implementation

package org.example;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.SafariDriver;
import org.openqa.selenium.firefox.SafariOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.concurrent.TimeUnit;

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

      // Desired Capabilities class to profile Safari
      DesiredCapabilities dc = new DesiredCapabilities();
      dc.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);

      // Safari Options class
      SafariOptions opt = new SafariOptions();
      opt.merge(dc);

      // Initiate the Webdriver with options
      WebDriver driver = new SafariDriver(opt);

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

      // launch application with SSL error
      driver.get("https://expired.badssl.com");

      // get browser title
      System.out.println("Browser title in Safari: " + driver.getTitle());

      // quitting the browser
      driver.quit();
   }
}
Browser title in Safari: Privacy error

在上述示例中,我们在 Safari 中处理了 SSL 证书错误并启动了应用程序,然后使用控制台中的消息获取了浏览器标题 - Browser title in Safari: Privacy error

这总结了我们对 Selenium 教程 - SSL 证书错误的全面讲解。我们从描述 SSL 证书错误入手,并逐步讲解了如何使用 Selenium Webdriver 处理不同浏览器中的 SSL 证书错误。这为你提供了关于 Selenium - SSL 证书错误的深入知识。明智的做法是不断练习你学到的内容并探索其他与 Selenium 相关的知识来加深你的理解并拓展你的视野。