《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理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 pathSystem.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 profileFirefoxProfile 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 classDesiredCapabilities 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 pathSystem.setProperty("webdriver.ie.driver", ".\\Tools\\IEDriverServer.exe"); // Open browser with capabilityWebDriver 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 profileFirefoxProfile 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工具基础使用教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/757873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MISC:常见编码

一、字符编码 1.ASCII码 使用指定7位或8位二进制数组合表示128-256种可能。 常⻅考点:解题过程中给出十进制或十六进制的连续数值。 进制转换工具: ASCII text,Hex,Binary,Decimal,Base64 converter (rapidtables.com) 2.Base64编码 ASCII编码以8个比特…

【Nginx安装教程】

目录 nginx官网安装教程安装相关路径相关命令(Linux)启动命令停止命令重新载入运行卸载 相关命令(Windows)启动命令停止命令重新载入重新打开日志文件查看Nginx版本: 面试题Nginx代理后如何获取客户端真实IP地址 nginx官网安装教程 安装教程目录 安装 Install th…

迁移学习的技术突破与应用前景

目录 前言1 迁移学习技术1.1 原理与分类1.2 主要挑战 2 迁移学习应用2.1 计算机视觉2.2 医疗健康 3 未来展望3.1 推动各领域发展3.2 提高模型泛化能力和效果3.3 在新兴领域中广泛应用 结语 前言 迁移学习作为机器学习领域的重要技术之一,以其能够将从一个任务中学到…

如何构建Docker自定义镜像

说明:平常我们使用Docker运行各种容器,极大地方便了我们对开发应用的使用,如MySQL、Redis,以及各种中间件,使用时只要拉镜像,运行容器即可。本文介绍如何创建一个Demo,自定义构建一个镜像。 开…

程序员下班以后做什么副业合适?

我就是一个最普通的网络安全工程师,出道快10年了,不出意外地遭遇到瓶颈期,但是凭技术在各大平台挖漏洞副业,硬是妥妥扛过来了。 因为对于程序员来讲,这是个试错成本很低、事半功倍的选择。编程技能是一种强大生产力&a…

Android 系统开发工具大全

写给应用开发的 Android Framework 教程——玩转AOSP篇之 Android 系统开发工具推荐 下面推荐的是我常用的工具,如果你有好用的开发工具欢迎在评论区留言讨论交流。 1. SSH 服务与 Tabby Terminal SSH 服务使得我们在其他平台上通过 SSH 客户端程序即可访问到我们…

计算机二级公共知识点---计算机系统组成,指令系统

计算机系统组成 文章目录 计算机系统组成一、计算机系统组成二级考点 二、指令执行方式二级考点: 指令的地址结构寻址地址 (考试重点)指令寻址数据寻址(重点)寻址方式(重点) 例题: E…

内存泄漏及解决方案

目录 什么是内存泄漏 常见的内存泄漏问题 闭包引起的内存泄漏 意外的全局变量 定时器未清除引起的内存泄露 循环引用引起的内存泄露 DOM泄露 前端常见内存泄露检测工具 什么是内存泄漏 首先,需要了解浏览器自身的内存回收机制。 每个浏览器会有自己的一套回…

KTV点歌系统|基于JSP技术+ Mysql+Java+ B/S结构的KTV点歌系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

python 笔记:locals

1 函数介绍 locals()是Python的一个内置函数,它用于获取当前局部符号表的字典。所谓的局部符号表是指当前作用域中定义的所有变量和它们的值组成的一个字典(dictionary)。当你在一个函数内部调用locals()时,它会返回包含该函数的…

基于爬虫对山西省人口采集+机器学习的可视化平台

文章目录 数据来源一、研究背景与意义二、研究目标三、研究内容与方法四、预期成果五、代码讲解六、全文总结 数据来源 1.所有原数据均来自:国家统计局-政府的数据网站 2.涉及到的一些预测数据是根据现有数据进行预测而来。 本文从数据来源,研究意义&am…

敏捷开发最佳实践:客户价值实践案例——用户画像的应用

本节所选实践,核心为了帮助大家了解受访者所在团队是如何通过“用户画像”来解决研发资源浪费的问题。 本实践节选自《2021中国企业敏捷实践白皮书》(点击可下载),分享者为钟书智,是来自某银行IT部的敏捷教练。 问题…

springboot284基于HTML5的问卷调查系统的设计与实现

问卷调查系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,问卷信息因为其管理内容繁杂,管理数量繁多导…

揭秘计算机奥秘:基础知识大挑战,踏上科技探索之旅

1、计算机是个啥? 想象一下,计算机就像是一个超级能干的大管家,它不仅能记住很多很多东西(存储数据),还能按照我们的指令去做各种各样的事情(执行计算和操作)。这个大管家是由许多部…

『运维心得』BPC-EPM-AddIn专家看过来

目录 系统版本问题 安装顺序问题 framework问题 vstor_redis问题 dll问题 一个小彩蛋 总结 最近在搞BPC,安装Office所需的EPM-AddIn的过程中,碰到了一些奇怪的问题。 查了BPC专家提供的安装说明文档,文档里要么没有提到我们碰到的问题…

RabbitmqMQ

1、RabbitMQ是什么? RabbitMQ是一个开源的、先进的消息队列(Message Queue)软件,它基于分布式消息传递和队列的概念,用来实现应用程序之间的异步通信。它是用Erlang语言编写的,因此它天生具备高可用性和健…

【RabbitMQ | 第六篇】消息重复消费问题及解决方案

文章目录 6.消息重复消费问题6.1问题介绍6.2解决思路6.3将该消息存储到Redis6.3.1将id存入string(单消费者场景)(1)实现思路(2)问题 6.3.2将id存入list中(多消费场景)(1&…

C++提高笔记(七)---STL常用算法(排序、拷贝和替换、算术生成、集合)

(由于上篇笔记篇幅过长,故开新篇 继续记录算法笔记) 2.3常用排序算法 学习目标:掌握常用的排序算法 算法简介: sort //对容器内元素进行排序 random_shuffle //洗牌 指定范围内的元素随机调整次序 merg…

【进阶版讲解如何系统地自学Python?】一篇文章带你了解

如何系统地自学Python? 1. 前言2. 确定学习目标3. 学习Python的基础4. 实践编程5. 理解面向对象编程6. 掌握Python库和框架7. 开始一个个人项目8. 加深理解9. 参与社区10. 不断挑战自己11. 总结和回顾 1. 前言 自学Python需要计划、资源和实践,以下是一个系统性自…

springboot + neo4j 功能使用

集成 添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId></dependency> spring:# neo4j 图数据库neo4j:uri: bolt://localhost:7687authentication:username: …