《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-上篇(详解教程)

简介: 【5月更文挑战第7天】本文介绍了如何在Java+Selenium自动化测试中处理浏览器对不信任证书的处理方法,特别是针对IE、Chrome和Firefox浏览器。在某些情况下,访问HTTPS网站时会遇到证书不可信的警告,但可以通过编程方式跳过这些警告。

1.简介

    这一篇宏哥主要介绍webdriver在IE、Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续打开不安全的链接。举例来说,想必大家都应该用过前几年的12306网站购票,点击新版购票,是不是会出现如下的界面。宏哥又找了一个https的页面,如下图所示:

2.三种浏览器如何处理不受信任的证书

三种浏览器访问网页,弹出证书不信任,需要点击下信任继续访问才行,多为访问https的网页。那么我们在做自动化测试的时候,如何跳过这一步骤,直接访问到我们需要的页面了,这个就是宏哥主要分享和讲解的如何在三大浏览器跳过这一步骤。

3.IE浏览器

3.1代码设计

3.2参考代码

package lessons;

 


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.ie.InternetExplorerDriver;



/**

* @author 北京-宏哥

*

*《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-上篇(详解教程)

*

* 2021年11月11日

*/


public class TestHttps {

 

   public static void main(String[] args) throws Exception {

             

       // Set the driver path

       System.setProperty("webdriver.ie.driver", ".\\Tools\\IEDriverServer.exe");

       

       WebDriver driver = new InternetExplorerDriver();

       

       Thread.sleep(1000);

       driver.manage().window().maximize();

       driver.get("https://www.21xrx.com/");

       Thread.sleep(2000);

       String js = "javascript:document.getElementById('overridelink').click();";

       //To click on "Continue to this website (not recommended)." link to load original website.

       //driver.navigate().to("javascript:document.getElementById('overridelink').click()");

       driver.get(js);

       //JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;

       //jsExecutor.executeScript(js);

       System.out.println(" 嘿嘿!宏哥,你已经成功跳过证书信任步骤啦!");

   }

 

}

3.3运行代码

1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

4.Firefox浏览器

4.1代码设计

4.2参考代码

package lessons;

 

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.firefox.FirefoxOptions;

import org.openqa.selenium.firefox.FirefoxProfile;


/**

* @author 北京-宏哥

*

*《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点(详解教程)

*

* 2021年11月11日

*/


public class TestHttps {

 

   public static void main(String[] args) throws Exception {

       

       System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe");  

       

       // 创建 firefox profile

       FirefoxProfile profile = new FirefoxProfile();

       

       // 把这项值设置为True,就是接受不可信任的证书

       profile.setAcceptUntrustedCertificates(true);

       

       FirefoxOptions firefoxOptions = new FirefoxOptions();

       firefoxOptions.setProfile(profile);

       

       // 打开一个带上门设置好profile的火狐浏览器

       WebDriver driver = new FirefoxDriver(firefoxOptions);

       //driver.setProfile(profile);

       driver.manage().window().maximize();

       driver.get("https://www.21xrx.com/");

       System.out.println(" 嘿嘿!宏哥,你已经成功跳过证书信任步骤啦!");

   }

 

}

4.3运行代码

1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

5.小结

5.1IE浏览器遇到问题及解决办法

1.运行IE浏览器报错:

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.

解决办法:

有的小伙伴或者童鞋们可能觉得是版本的问题,宏哥第一想法也是这个问题,但是又想了想,以前可以运行现在连浏览器的启动不了,确定不是版本问题,而是由其他原因引起的。这是因为没有关闭IE浏览器的保护模式。当运行测试用例后出现类似以下内容的错误:

Exception in thread "main" org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer.

Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.

应该就是IE浏览器的保护模式未关闭。

  

在这里可以关闭保护模式。需要注意的是,我们访问的站点是哪个区域的,就要把那个区域的保护模式观点。(一般来说我都是关全部)

而针对IE10及以上版本,我们需要关闭“增强保护模式”

     

PS:  请注意这里的选项是“重启计算机后生效”!而针对IE11,我们需要进一步修改注册表。(Run->regedit->Enter)

   

如果FeatureControl下没有FEATURE_BFCACHE,就以FEATURE_BFCACHE为名new一个key!并在其下创建一个DWORD,取名为:iexplore.exe,value值为0。

另外,别忘了一件事情,就是IE的缩放选项。请设置缩放选项为100%,否则可能无法定位页面元素。

2.IE以前遇到这种问题代码这么写,就可以现在就不行了,所以宏哥换了一种方式,利用前边学习过的JavaScript执行知识进行解决。

package lessons;

 

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.firefox.FirefoxOptions;

import org.openqa.selenium.firefox.FirefoxProfile;

import org.openqa.selenium.ie.InternetExplorerDriver;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;


/**

* @author 北京-宏哥

*

*《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点(详解教程)

*

* 2021年11月11日

*/


public class TestHttps {

 

   public static void main(String[] args) throws Exception {

               

       // Create object of DesiredCapabilities class

       DesiredCapabilities cap=DesiredCapabilities.internetExplorer();

       cap.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);

       cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

       cap.setJavascriptEnabled(true);

       

       // Set the driver path

       System.setProperty("webdriver.ie.driver", ".\\Tools\\IEDriverServer.exe");

       

       // Open browser with capability

       WebDriver driver=new InternetExplorerDriver(cap);

       driver.manage().window().maximize();

       driver.get("https://www.21xrx.com/");

       System.out.println(" 嘿嘿!宏哥,你已经成功跳过证书信任步骤啦!");

   }

 

}

3.也许有的小伙伴或者童鞋们,发现使用宏哥的代码也不成功,那是因为你没有将所有的安全保护模式关闭,解决办法:参考宏哥知识点1,将所有安全保护模式关闭,再次运行代码就成功了。

5.2Firefox浏览器遇到问题及解决办法

1.Firefox以前遇到这种问题代码这么写,就可以现在就不行了,所以宏哥也换了一种方式。

package lessons;

 

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.firefox.FirefoxOptions;

import org.openqa.selenium.firefox.FirefoxProfile;

import org.openqa.selenium.ie.InternetExplorerDriver;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;


/**

* @author 北京-宏哥

*

*《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点(详解教程)

*

* 2021年11月11日

*/


public class TestHttps {

 

   public static void main(String[] args) throws Exception {

               

       System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe");  

       

       // 创建 firefox profile

       FirefoxProfile profile = new FirefoxProfile();

       

       // 把这项值设置为True,就是接受不可信任的证书

       profile.setAcceptUntrustedCertificates(true);

       

       // 打开一个带上门设置好profile的火狐浏览器

       WebDriver driver = new FirefoxDriver(profile);

       

       driver.manage().window().maximize();

       driver.get("https://www.21xrx.com/");

       System.out.println(" 嘿嘿!宏哥,你已经成功跳过证书信任步骤啦!");

   }

 

}

但是代码报错如下图所示:

解决办法:宏哥换了一种写法,查看4.2的参考代码




每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):


Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关文章
|
3天前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
16 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
8天前
|
存储 网络协议 Oracle
java教程
java教程【8月更文挑战第11天】
14 5
|
4天前
|
Web App开发 数据采集 测试技术
五分钟轻松掌握 Python 自动化测试 Selenium
本文主要介绍了 Selenium 相关内容,主要涉及 Selenium 知识面,从开始的 Python 小案例,到后面的 API 全面了解,以及 Selenium 的常用功能,到最后的 XPATH 以及爬虫的认知。这些内容已经能够全面,且具有实践性。
|
7天前
|
Web App开发 IDE 测试技术
天呐!当揭开 Selenium 自动化测试框架的神秘面纱,设计与实现令人瞠目!
【8月更文挑战第12天】Selenium 是一强大自动化测试框架,用于Web应用测试。它含WebDriver、IDE和Grid等工具,支持Chrome、Firefox等浏览器。可通过编程模拟用户交互验证应用功能。例如使用Python结合Selenium WebDriver编写自动化测试脚本,实现打开网页、操作元素及断言等功能。还可结合测试框架和Selenium Grid提升测试效率和并行执行能力。
18 1
|
15天前
|
Web App开发 人工智能 测试技术
探索自动化测试的高效之路:以Selenium为例
【8月更文挑战第4天】在软件开发周期中,测试阶段扮演着至关重要的角色。自动化测试作为提高测试效率和准确性的有效手段,已逐渐成为开发流程中的标配。本文将通过介绍Selenium这一流行的自动化测试工具,探讨如何构建高效的自动化测试框架,并通过实际代码示例,揭示其在提升软件质量与开发效率方面的巨大潜力。
|
17天前
|
Web App开发 Java 测试技术
自动化测试中的神器:Selenium WebDriver
【8月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘航船,而Selenium WebDriver则是这艘航船上的强力引擎。本文将带你领略Selenium WebDriver的魅力,从安装到实战应用,一步步揭开其神秘的面纱,让你在自动化测试的旅程上乘风破浪。
18 1
|
18天前
|
Web App开发 JavaScript 前端开发
探索自动化测试:以Selenium为例
【8月更文挑战第1天】在软件开发的海洋中,自动化测试如同一艘航船,它能够带领我们高效地穿梭于代码的波涛之中。本文将揭开自动化测试的神秘面纱,通过一个具体的例子—使用Selenium进行Web应用测试—来展示其魅力所在。我们将从搭建环境开始,逐步深入到编写测试用例,最后实现测试的自动化执行。这不仅是一次技术的探险,更是对效率和质量双重追求的体现。那么,让我们一起启航,去发现自动化测试的力量吧!
|
19天前
|
Web App开发 Java 测试技术
探索自动化测试的利器:Selenium WebDriver
【7月更文挑战第31天】在软件开发的海洋中,自动化测试如同指南针,为质量保驾护航。本文将深入介绍Selenium WebDriver这一强大的自动化测试工具,通过实际代码示例,揭示其在提高测试效率与准确性方面的巨大潜力。
14 0
|
19天前
|
Web App开发 测试技术 API
自动化测试的利器:Selenium WebDriver
【7月更文挑战第31天】在当今软件开发周期不断缩短的背景下,自动化测试已成为确保软件质量不可或缺的一环。Selenium WebDriver作为一款流行的自动化测试工具,以其灵活性和强大的功能受到广大开发者的喜爱。本文将深入探讨Selenium WebDriver的核心组件、工作原理以及如何通过代码示例进行基本的网页自动化操作。我们将通过实践来揭示Selenium WebDriver如何在提高测试效率的同时,保证软件产品的质量标准。
17 0
|
19天前
|
安全 测试技术 网络安全
网络安全的盾牌:漏洞管理、加密技术和安全意识自动化测试中的神器:Selenium WebDriver
【7月更文挑战第31天】在数字化浪潮中,信息安全成为保护个人隐私和商业秘密不可或缺的一环。本文将探讨网络安全中的常见漏洞,介绍加密技术的基础原理,并强调培养良好的安全意识的重要性。通过实际代码示例,我们将展示如何在现实世界中应用这些概念来提高系统的安全性。 【7月更文挑战第31天】在软件开发的广阔天地中,自动化测试以其高效、准确的特点,成为了提升软件质量的关键一环。Selenium WebDriver,作为自动化测试领域的佼佼者,不仅简化了测试流程,还提升了测试效率。本文将深入探讨Selenium WebDriver的核心组件和工作原理,并通过实际代码示例,展示其在自动化测试中的应用价值。无
30 0