《手把手教你》系列技巧篇(四十三)-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工具基础使用教程

相关文章
|
1月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
85 8
|
2月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
160 4
|
6天前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
82 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
15天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
66 19
Selenium IDE:Web自动化测试的得力助手
|
5天前
|
网络协议 应用服务中间件 网络安全
免费泛域名https证书教程—无限免费续签
随着互联网安全意识提升,越来越多网站采用HTTPS协议。本文介绍如何通过JoySSL轻松获取并实现免费泛域名SSL证书的无限续签。JoySSL提供永久免费通配符SSL证书,支持无限制域名申请及自动续签,全中文界面适合国内用户。教程涵盖注册账号、选择证书类型、验证域名所有权、下载与安装证书以及设置自动续签等步骤,帮助网站简化SSL证书管理流程,确保长期安全性。
|
27天前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
64 20
|
23天前
|
安全 数据安全/隐私保护
IP地址https证书免费申请教程
本教程详细介绍如何免费申请IP地址HTTPS证书,涵盖准备、申请、审核、下载与部署阶段。从确认IP地址、选择CA、注册账户到验证控制权,最后完成证书部署,确保数据传输安全。注意证书有效期较短,需及时续签。
|
1月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
55 11
|
2月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
1月前
|
安全 网络安全 数据安全/隐私保护
政务内网实现https访问教程
政务内网实现HTTPS访问需经过多个步骤:了解HTTPS原理,选择并申请适合的SSL证书,配置SSL证书至服务器,设置端口映射与访问控制,测试验证HTTPS访问功能,注意证书安全性和兼容性,定期备份与恢复。这些措施确保了数据传输的安全性,提升了政务服务的效率与安全性。