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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【5月更文挑战第8天】这篇文档介绍了如何在IE、Chrome和Firefox浏览器中处理不信任证书的问题。作者北京-宏哥分享了如何通过编程方式跳过浏览器的证书警告,直接访问不受信任的HTTPS网站。文章分为几个部分,首先简要介绍了问题背景,然后详细讲解了在Chrome浏览器中的两种方法,包括代码设计和运行效果,并给出了其他浏览器的相关信息和参考资料。最后,作者总结了处理此类问题的一些通用技巧。

1.简介

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

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

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

3.Chrome浏览器

3.1代码设计

3.2参考代码

package lessons;


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.chrome.ChromeOptions;



/**

* @author 北京-宏哥

*

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

*

* 2021年11月12日

*/

public class SSLCertificate {

   

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

       

       ChromeOptions options = new ChromeOptions();

       options.addArguments("--ignore-certificate-errors");

       System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");

       

       // 打开带capability设置选项的浏览器

       WebDriver driver=new ChromeDriver(options);

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

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

       

   }


}

3.3运行代码

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

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

4.小结

4.1Chrome浏览器遇到问题及解决办法

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

package lessons;


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;


/**

* @author 北京-宏哥

*

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

*

* 2021年11月12日

*/

public class SSLCertificate {

   

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

       

        // 创建DesiredCapabilities类的一个对象实例

       DesiredCapabilities cap=DesiredCapabilities.chrome();

       

       // 设置变量ACCEPT_SSL_CERTS的值为True

       cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

       

       System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");

       

       // 打开带capability设置选项的浏览器

       WebDriver driver=new ChromeDriver(cap);

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

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

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

   }


}

但是运行代码。Chrome动作(没有跳过证书认证这一步骤)如下视频所示:

4.2Chrome的options参数

Chrome Options参数收集---------------------------

-

0 --purge-memory-button 在Chrome的任务管理器中增加内存清理功能



序号    参数    说明

1    --allow-outdated-plugins     不停用过期的插件。

2    --allow-running-insecure-content     默认情况下,https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。

3    --allow-scripting-gallery     允许拓展脚本在官方应用中心生效。默认情况下,出于安全因素考虑这些脚本都会被阻止。

4    --disable-accelerated-video     停用 GPU 加速视频。

5    --disable-dart     停用 Dart。

6    --disable-desktop-notifications     禁用桌面通知,在 Windows 中桌面通知默认是启用的。

7    --disable-extensions     禁用拓展。

8    --disable-file-system     停用 FileSystem API。

9    --disable-preconnect     停用 TCP/IP 预连接。

10    --disable-remote-fonts     关闭远程字体支持。SVG 中字体不受此参数影响。

11    --disable-speech-input     停用语音输入。

12    --disable-web-security     不遵守同源策略。

13    --disk-cache-dir     将缓存设置在给定的路径。

14    --disk-cache-size     设置缓存大小上限,以字节为单位。

15    --dns-prefetch-disable     停用DNS预读。

16    --enable-print-preview     启用打印预览。

17    --extensions-update-frequency     设定拓展自动更新频率,以秒为单位。

18    --incognito     让浏览器直接以隐身模式启动。

19    --keep-alive-for-test     最后一个标签关闭后仍保持浏览器进程。(某种意义上可以提高热启动速度,不过你最好得有充足的内存)

20    --kiosk     启用kiosk模式。(一种类似于全屏的浏览模式)

21    --lang     使用指定的语言。

22    --no-displaying-insecure-content     默认情况下,https 页面允许从 http 链接引用图片/字体/框架。添加这一参数会阻止这些内容。

23    --no-first-run     跳过 Chromium 首次运行检查。

24    --no-referrers     不发送 Http-Referer 头。

25    --no-sandbox     彻底停用沙箱。

26    --no-startup-window     启动时不建立窗口。

27    --proxy-pac-url     使用给定 URL 的 pac 代理脚本。(也可以使用本地文件,如 --proxy-pac-url="file:\\\c:\proxy.pac"

28    --proxy-server     使用给定的代理服务器,这个参数只对 http 和 https 有效。(例如 --proxy-server=127.0.0.1:8087

29    --single-process     以单进程模式运行 Chromium。(启动时浏览器会给出不安全警告)

30    --start-maximized     启动时最大化。

31    --user-agent     使用给定的 User-Agent 字符串


参数:--user-data-dir=UserDataDir

用途:自订使用者帐户资料夹(如:–user-data-dir="D:\temp\Chrome User Data"

参数:--process-per-tab

用途:每个分页使用单独进程

参数:--process-per-site

用途:每个站点使用单独进程

参数:--in-process-plugins

用途:插件不启用单独进程


参数:--disable-popup-blocking

用途:禁用弹出拦截

参数:--disable-javascript

用途:禁用JavaScript

参数:--disable-java

用途:禁用Java

参数:--disable-plugins

用途:禁用插件

参数:–disable-images

用途:禁用图像

参数:--omnibox-popup-count=”num”

用途:将网址列弹出的提示选单数量改为num个

参数:--enable-vertical-tabs

用途:调整chrome游览器标签存放在左边,非顶部

5.扩展

5.1Safari浏览器(参考代码,没有亲自实践)

// Create object of DesiredCapabilities class

 

DesiredCapabilities cap=DesiredCapabilities.safari();

 

// Set ACCEPT_SSL_CERTS  variable to true

cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

 

// Set the driver path

System.setProperty("webdriver.safari.driver","Safari driver path");

 

// Open browser with capability

WebDriver driver=new SafariDriver(cap);

6.总结

其实这一类问题,直接就用宏哥在IE浏览器那种执行JavaScript脚本的方法,无论遇到什么浏览器都可以解决的,就会这一招就可以打遍天下无敌手了。

1.简介

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

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

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

3.Chrome浏览器

3.1代码设计

3.2参考代码

package lessons;


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.chrome.ChromeOptions;



/**

* @author 北京-宏哥

*

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

*

* 2021年11月12日

*/

public class SSLCertificate {

   

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

       

       ChromeOptions options = new ChromeOptions();

       options.addArguments("--ignore-certificate-errors");

       System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");

       

       // 打开带capability设置选项的浏览器

       WebDriver driver=new ChromeDriver(options);

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

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

       

   }


}

3.3运行代码

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

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

4.小结

4.1Chrome浏览器遇到问题及解决办法

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

package lessons;


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;


/**

* @author 北京-宏哥

*

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

*

* 2021年11月12日

*/

public class SSLCertificate {

   

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

       

        // 创建DesiredCapabilities类的一个对象实例

       DesiredCapabilities cap=DesiredCapabilities.chrome();

       

       // 设置变量ACCEPT_SSL_CERTS的值为True

       cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

       

       System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");

       

       // 打开带capability设置选项的浏览器

       WebDriver driver=new ChromeDriver(cap);

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

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

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

   }


}

但是运行代码。Chrome动作(没有跳过证书认证这一步骤)如下视频所示:

4.2Chrome的options参数

Chrome Options参数收集---------------------------

-

0 --purge-memory-button 在Chrome的任务管理器中增加内存清理功能



序号    参数    说明

1    --allow-outdated-plugins     不停用过期的插件。

2    --allow-running-insecure-content     默认情况下,https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。

3    --allow-scripting-gallery     允许拓展脚本在官方应用中心生效。默认情况下,出于安全因素考虑这些脚本都会被阻止。

4    --disable-accelerated-video     停用 GPU 加速视频。

5    --disable-dart     停用 Dart。

6    --disable-desktop-notifications     禁用桌面通知,在 Windows 中桌面通知默认是启用的。

7    --disable-extensions     禁用拓展。

8    --disable-file-system     停用 FileSystem API。

9    --disable-preconnect     停用 TCP/IP 预连接。

10    --disable-remote-fonts     关闭远程字体支持。SVG 中字体不受此参数影响。

11    --disable-speech-input     停用语音输入。

12    --disable-web-security     不遵守同源策略。

13    --disk-cache-dir     将缓存设置在给定的路径。

14    --disk-cache-size     设置缓存大小上限,以字节为单位。

15    --dns-prefetch-disable     停用DNS预读。

16    --enable-print-preview     启用打印预览。

17    --extensions-update-frequency     设定拓展自动更新频率,以秒为单位。

18    --incognito     让浏览器直接以隐身模式启动。

19    --keep-alive-for-test     最后一个标签关闭后仍保持浏览器进程。(某种意义上可以提高热启动速度,不过你最好得有充足的内存)

20    --kiosk     启用kiosk模式。(一种类似于全屏的浏览模式)

21    --lang     使用指定的语言。

22    --no-displaying-insecure-content     默认情况下,https 页面允许从 http 链接引用图片/字体/框架。添加这一参数会阻止这些内容。

23    --no-first-run     跳过 Chromium 首次运行检查。

24    --no-referrers     不发送 Http-Referer 头。

25    --no-sandbox     彻底停用沙箱。

26    --no-startup-window     启动时不建立窗口。

27    --proxy-pac-url     使用给定 URL 的 pac 代理脚本。(也可以使用本地文件,如 --proxy-pac-url="file:\\\c:\proxy.pac"

28    --proxy-server     使用给定的代理服务器,这个参数只对 http 和 https 有效。(例如 --proxy-server=127.0.0.1:8087

29    --single-process     以单进程模式运行 Chromium。(启动时浏览器会给出不安全警告)

30    --start-maximized     启动时最大化。

31    --user-agent     使用给定的 User-Agent 字符串


参数:--user-data-dir=UserDataDir

用途:自订使用者帐户资料夹(如:–user-data-dir="D:\temp\Chrome User Data"

参数:--process-per-tab

用途:每个分页使用单独进程

参数:--process-per-site

用途:每个站点使用单独进程

参数:--in-process-plugins

用途:插件不启用单独进程


参数:--disable-popup-blocking

用途:禁用弹出拦截

参数:--disable-javascript

用途:禁用JavaScript

参数:--disable-java

用途:禁用Java

参数:--disable-plugins

用途:禁用插件

参数:–disable-images

用途:禁用图像

参数:--omnibox-popup-count=”num”

用途:将网址列弹出的提示选单数量改为num个

参数:--enable-vertical-tabs

用途:调整chrome游览器标签存放在左边,非顶部

5.扩展

5.1Safari浏览器(参考代码,没有亲自实践)

// Create object of DesiredCapabilities class

 

DesiredCapabilities cap=DesiredCapabilities.safari();

 

// Set ACCEPT_SSL_CERTS  variable to true

cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

 

// Set the driver path

System.setProperty("webdriver.safari.driver","Safari driver path");

 

// Open browser with capability

WebDriver driver=new SafariDriver(cap);

6.总结

其实这一类问题,直接就用宏哥在IE浏览器那种执行JavaScript脚本的方法,无论遇到什么浏览器都可以解决的,就会这一招就可以打遍天下无敌手了。




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

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


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

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

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

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

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

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

Pycharm工具基础使用教程

相关文章
|
27天前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
93 5
|
30天前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
2天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
8 1
|
25天前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
39 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
27天前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
145 5
|
30天前
|
XML Java Maven
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
44 7
|
4天前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
|
29天前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
205 1
|
1月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
1月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。