1.简介

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

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

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

3.Chrome浏览器

3.1代码设计

3.2参考代码

  1. package lessons;
  2.  
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import org.openqa.selenium.chrome.ChromeOptions;
  6.  
  7. /**
  8. * @author 北京-宏哥
  9. *
  10. * 《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
  11. *
  12. * 2021年11月12日
  13. */
  14. public class SSLCertificate {
  15.  
  16. public static void main(String[] args) throws Exception {
  17.  
  18. ChromeOptions options = new ChromeOptions();
  19. options.addArguments("--ignore-certificate-errors");
  20. System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
  21.  
  22. // 打开带capability设置选项的浏览器
  23. WebDriver driver=new ChromeDriver(options);
  24. driver.manage().window().maximize();
  25. driver.get("https://www.21xrx.com/");
  26.  
  27. }
  28.  
  29. }

3.3运行代码

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

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

4.小结

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

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

  1. package lessons;
  2.  
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.chrome.ChromeDriver;
  5. import org.openqa.selenium.remote.CapabilityType;
  6. import org.openqa.selenium.remote.DesiredCapabilities;
  7.  
  8. /**
  9. * @author 北京-宏哥
  10. *
  11. * 《手把手教你》系列技巧篇(四十三)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
  12. *
  13. * 2021年11月12日
  14. */
  15. public class SSLCertificate {
  16.  
  17. public static void main(String[] args) throws Exception {
  18.  
  19. // 创建DesiredCapabilities类的一个对象实例
  20. DesiredCapabilities cap=DesiredCapabilities.chrome();
  21.  
  22. // 设置变量ACCEPT_SSL_CERTS的值为True
  23. cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
  24.  
  25. System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
  26.  
  27. // 打开带capability设置选项的浏览器
  28. WebDriver driver=new ChromeDriver(cap);
  29. driver.manage().window().maximize();
  30. driver.get("https://www.21xrx.com/");
  31. System.out.println(" 嘿嘿!宏哥,你已经成功跳过证书信任步骤啦!");
  32. }
  33.  
  34. }

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

4.2Chrome的options参数

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


  1. -

  1. 0 --purge-memory-button Chrome的任务管理器中增加内存清理功能
  2.  
  3. 序号 参数 说明
  4. 1 --allow-outdated-plugins 不停用过期的插件。
  5. 2 --allow-running-insecure-content 默认情况下,https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。
  6. 3 --allow-scripting-gallery 允许拓展脚本在官方应用中心生效。默认情况下,出于安全因素考虑这些脚本都会被阻止。
  7. 4 --disable-accelerated-video 停用 GPU 加速视频。
  8. 5 --disable-dart 停用 Dart
  9. 6 --disable-desktop-notifications 禁用桌面通知,在 Windows 中桌面通知默认是启用的。
  10. 7 --disable-extensions 禁用拓展。
  11. 8 --disable-file-system 停用 FileSystem API
  12. 9 --disable-preconnect 停用 TCP/IP 预连接。
  13. 10 --disable-remote-fonts 关闭远程字体支持。SVG 中字体不受此参数影响。
  14. 11 --disable-speech-input 停用语音输入。
  15. 12 --disable-web-security 不遵守同源策略。
  16. 13 --disk-cache-dir 将缓存设置在给定的路径。
  17. 14 --disk-cache-size 设置缓存大小上限,以字节为单位。
  18. 15 --dns-prefetch-disable 停用DNS预读。
  19. 16 --enable-print-preview 启用打印预览。
  20. 17 --extensions-update-frequency 设定拓展自动更新频率,以秒为单位。
  21. 18 --incognito 让浏览器直接以隐身模式启动。
  22. 19 --keep-alive-for-test 最后一个标签关闭后仍保持浏览器进程。(某种意义上可以提高热启动速度,不过你最好得有充足的内存)
  23. 20 --kiosk 启用kiosk模式。(一种类似于全屏的浏览模式)
  24. 21 --lang 使用指定的语言。
  25. 22 --no-displaying-insecure-content 默认情况下,https 页面允许从 http 链接引用图片/字体/框架。添加这一参数会阻止这些内容。
  26. 23 --no-first-run 跳过 Chromium 首次运行检查。
  27. 24 --no-referrers 不发送 Http-Referer 头。
  28. 25 --no-sandbox 彻底停用沙箱。
  29. 26 --no-startup-window 启动时不建立窗口。
  30. 27 --proxy-pac-url 使用给定 URL pac 代理脚本。(也可以使用本地文件,如 --proxy-pac-url="file:\\\c:\proxy.pac"
  31. 28 --proxy-server 使用给定的代理服务器,这个参数只对 http https 有效。(例如 --proxy-server=127.0.0.1:8087
  32. 29 --single-process 以单进程模式运行 Chromium。(启动时浏览器会给出不安全警告)
  33. 30 --start-maximized 启动时最大化。
  34. 31 --user-agent 使用给定的 User-Agent 字符串
  35.  
  36. 参数:--user-data-dir=UserDataDir
  37. 用途:自订使用者帐户资料夹(如:–user-data-dir="D:\temp\Chrome User Data"
  38. 参数:--process-per-tab
  39. 用途:每个分页使用单独进程
  40. 参数:--process-per-site
  41. 用途:每个站点使用单独进程
  42. 参数:--in-process-plugins
  43. 用途:插件不启用单独进程
  44.  
  45. 参数:--disable-popup-blocking
  46. 用途:禁用弹出拦截
  47. 参数:--disable-javascript
  48. 用途:禁用JavaScript
  49. 参数:--disable-java
  50. 用途:禁用Java
  51. 参数:--disable-plugins
  52. 用途:禁用插件
  53. 参数:–disable-images
  54. 用途:禁用图像
  55. 参数:--omnibox-popup-count=”num
  56. 用途:将网址列弹出的提示选单数量改为num
  57. 参数:--enable-vertical-tabs
  58. 用途:调整chrome游览器标签存放在左边,非顶部

5.扩展

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

  1. // Create object of DesiredCapabilities class
  2.  
  3. DesiredCapabilities cap=DesiredCapabilities.safari();
  4.  
  5. // Set ACCEPT_SSL_CERTS variable to true
  6. cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
  7.  
  8. // Set the driver path
  9. System.setProperty("webdriver.safari.driver","Safari driver path");
  10.  
  11. // Open browser with capability
  12. WebDriver driver=new SafariDriver(cap);

6.总结

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

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

  1. 《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)

    1.简介 上一篇宏哥介绍是如何使用logback将日志输出到控制台中,但是如果需要发给相关人需要你拷贝出来,有时候由于控制台窗口的限制,有部分日志将会无法查看,因此我们还是需要将日志输出到文件中,因此 ...

  2. 《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

  3. 《手把手教你》系列技巧篇(十三)-java+ selenium自动化测试-元素定位大法之By partial link text(详细教程)

    1.简介 本文按计划就要开始介绍partial link text,顾名思义是通过链接定位的(官方说法:超链接文本定位).什么是partial link text呢,看到part这个单词我们就可以知道 ...

  4. 《手把手教你》系列技巧篇(三十四)-java+ selenium自动化测试-单选和多选按钮操作-中篇(详解教程)

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历单选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的单选按钮进行实战. 2.d ...

  5. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

  6. 《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)

    1.简介 在实际自动化测试过程中,我们同样也避免不了会遇到单选和多选的测试,特别是调查问卷或者是答题系统中会经常碰到.因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助 ...

  7. 《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)

    1.简介 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本.接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用 ...

  8. 《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)

    1.简介 上一篇文章中,从TestNg的特点我们知道支持变量,那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试.那么如何实现同时启动不同的浏览器对脚本进行测试,且听宏哥娓娓道来. 2.项目 ...

  9. 《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

随机推荐

  1. 秒级接入、效果满分的文档预览方案——COS文档预览

    一.导语 ​ 说起 Microsoft Office 办公三件套,想必大家都不会陌生,社畜日常的工作或者生活中,多多少少遇到过这种情况: 本地创建的文档换一台电脑打开,就出现了字体丢失.排版混乱的情况 ...

  2. Ubuntu安装 配置GCC和Vim

    VMware14.0和Ubuntu镜像安装 https://mp.weixin.qq.com/s/045wrbdv92PkUQn2abddvA 适应屏幕设置 按照下列流程检查虚拟机设置 查看 -> ...

  3. keras框架下的深度学习(一)手写体识别

    这个系列文章主要记录使用keras框架来搭建深度学习模型的学习过程,其中有一些自己的想法和体会,主要学习的书籍是:Deep Learning with Python,使用的IDE是pycharm. 在 ...

  4. (翻译)领域驱动设计实现-Implementing Domain Driven Design

    简介 Implementing Domain Driven Design 领域驱动设计实现 A practical guide for implementing the Domain Driven D ...

  5. GPIO位带操作点亮LED,且使用按键控制开关

    1. 项目 类似与C51单片机的位操作使能引脚来点亮LED. 例如,sbit P0^0 = 0 LED1 = P0^0; 2. 代码 main.c #include "stm32f10x.h ...

  6. 初学Python-day13 文件处理1

    IO操作 一.os模块 作用:包含了操作系统的基本功能,提供了非常丰富的用来处理文件和目录的函数或方法. 1.属性 函数名 函数说明 name 获取操作系统的类型 uname 获取操作系统的信息(li ...

  7. ScatterLayout:分散布局在py中的引用

    """ ScatterLayout:分散布局 """ from kivy.app import App from kivy.uix.scat ...

  8. .NET CLI简单教程和项目结构

    WHAT IS .NET CLI ? .NET 命令行接口 (CLI) 工具是用于开发.生成.运行和发布 .NET 应用程序的跨平台工具链. 来源:.NET CLI | Microsoft Docs ...

  9. (四)、Docker 镜像

    1.Docker镜像是什么? 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 2.Do ...

  10. 学习手册 | MySQL篇 · 其一

    InnoDB关键特性 插入缓冲(Insert Buffer) 问题:   在InnoDB插入的时候,由于记录通常都是按照插入顺序,也就是主键的顺序进行插入的,因此,插入聚集索引是顺序的,不需要随机IO ...