• Selenium Video Tutorials

Selenium - SSL证书错误



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

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

Selenium SSL Certificate Error 1

Chrome 浏览器

要在 Chrome 中处理 SSL 证书,我们必须将 ChromeOptions 类与 DesiredCapabilities 类一起使用。Chrome 中显示的 SSL 错误为您的连接不安全

代码实现

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 证书错误,启动了应用程序,然后在控制台中获取了包含消息的浏览器标题 - Chrome 中的浏览器标题:隐私错误

Firefox 浏览器

要在 Firefox 中处理 SSL 证书,我们必须将 FirefoxOptions 类与 DesiredCapabilities 类一起使用。Firefox 中显示的 SSL 错误为警告:前方存在潜在的安全风险

代码实现

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 证书错误,启动了应用程序,然后在控制台中获取了包含消息的浏览器标题 - Firefox 中的浏览器标题:隐私错误

Edge 浏览器

要在 Edge 中处理 SSL 证书,我们必须将 EdgeOptions 类与 DesiredCapabilities 类一起使用。Edge 中显示的 SSL 错误为您的连接不安全

代码实现

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 证书错误,启动了应用程序,然后在控制台中获取了包含消息的浏览器标题 - Edge 中的浏览器标题:隐私错误

Safari 浏览器

要在 Safari 中处理 SSL 证书,我们必须将 SafariOptions 类与 DesiredCapabilities 类一起使用。Safari 中显示的 SSL 错误为此连接不安全

代码实现

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 证书错误,启动了应用程序,然后在控制台中获取了包含消息的浏览器标题 - Safari 中的浏览器标题:隐私错误

本教程到此结束,我们全面讲解了 Selenium - SSL 证书错误。我们首先描述了什么是 SSL 证书错误,然后逐步讲解了如何使用 Selenium Webdriver 在不同浏览器中处理 SSL 证书错误的示例。这使您掌握了 Selenium - SSL 证书错误的深入知识。明智的做法是继续练习您所学到的知识,并探索与 Selenium 相关的其他内容,以加深您的理解并拓宽视野。

广告