1.简介

今天按照原计划宏哥要用实例来给小伙伴或童鞋们来演示一下,如何利用cookie实现跳过验证码进行登录。这个场景是自动登陆。有很多系统的登陆信息都是保存在cookie里的,因此只要往cookie中添加正确的值就可以实现自动登陆了。什么图片验证码、登陆的用例就都是浮云了。而且登录往往就自动化测试的第一步,系统都登录不进去,后边无论是多么高大上都是白扯。因此宏哥拿出一篇文章的篇幅对其进行介绍和分享,希望对你能够有所帮助。

2.Fiddler

2.1IE 、谷歌浏览器抓取HTTPS请求

1.IE 、谷歌浏览器抓取HTTPS请求

Tools -- Options -- HTTPS --勾选 Decrypt HTTPS traffic --点击 OK,直接抓取HTTPS请求,如果抓不到,则设置证书

2.设置证书

Tools -- Options -- HTTPS --勾选 Decrypt HTTPS traffic--点击Actions -- 选择最后一个选项,重置所有证书 --点击确定--然后就一直选择确定就安装成功了。

3.如果查看是否安装成功呢:

Tools -- Options -- HTTPS --勾选 Decrypt HTTPS traffic--点击Actions--Open Windows certificate manage--操作--查找证书--输入fiddle--看是否要相关的证书,

如果有找到,则说明安装成功,重启fiddler和浏览器则可以抓包成功!

3.自动化实践

3.1抓包

1.开启Fiddler 工具,如下图所示:

2.通过浏览器登录正常登录百度账号。如下图示

3.通过Fiddler获取登录请求的Cookie。找到Host为“passport.baidu.com”的URL,在右侧窗口查看该请求的Cookie。

4.然后,找到重要的两个参数“BAIDUID”和“BDUSS”。

3.2代码设计

3.3参考代码

package lessons;

import org.openqa.selenium.By;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; /**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列技巧篇(六十三)-java+ selenium自动化测试 - cookie -中篇(详细教程)
*
* 2022年1月26日
*/
public class CookieBaidu { public static void main(String[] args) throws InterruptedException { System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驱动路径 WebDriver driver = new ChromeDriver ();
driver.get("http://www.baidu.com");
driver.manage().window().maximize();
Thread.sleep(5000);
System.out.println(driver.manage().getCookies()); // 通过fiddler抓包工具,找到Host为“passport.baidu.com”的URL,在右侧窗口查看该请求的Cookie,
// 找到重要的两个参数“BAIDUID”和“BDUSS”
Cookie c1 = new Cookie("BAIDUID", "70EB956C3AD6908B86068C5D02205F87:FG=1");
Cookie c2 = new Cookie("BDUSS", "AAAAAAAAAAAAAAAAAAAAAAAAA4X7mEOF-5hM"); driver.manage().addCookie(c1);
driver.manage().addCookie(c2); driver.navigate().refresh(); // 获得登录用户名
String username = driver.findElement(By.className("user-name")).getText();
System.out.println("username = " +username); System.out.println(driver.manage().getCookies()); Thread.sleep(6000);
System.out.println("browser will be close");
driver.quit();
}
}

3.4运行代码

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

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

4.小结

  这里演示了如何跳过验证码实现登录,如果没有验证码,我们直接就通过用户名和密码登录后,获取cookie后,然后保存cookie后,进行相应的操作(例如接口测试时,后续的接口可能需要cookie或者session、token,这里会在后续的接口部分进行详细讲解,这里就不做赘述了)。好了,今天时间也不早了就分享和讲解到这里。感谢您耐心的阅读!

《手把手教你》系列技巧篇(六十四)-java+ selenium自动化测试 - cookie -中篇(详细教程)的更多相关文章

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

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

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

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

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

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

  4. 《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)

    1.简介 经过前边几篇文章和宏哥一起的学习,想必你已经知道了如何去查看Selenium相关接口或者方法.一般来说我们绝大多数看到的是已经封装好的接口,在查看接口源码的时候,你可以看到这个接口上边的注释 ...

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

    1.简介 从这篇文章开始,要介绍web自动化核心的内容,也是最困难的部分了,就是:定位元素,并去对定位到的元素进行一系列相关的操作.想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如 ...

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

    1.简介 上一篇宏哥已经介绍了通过id来定位元素,今天继续介绍其他剩下的七种定位方法中的通过name来定位元素.本文来介绍Webdriver中元素定位方法之By name,顾名思义,就是我们想要定位的 ...

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

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

  8. 《手把手教你》系列技巧篇(六十)-java+ selenium自动化测试 - 截图三剑客 -中篇(详细教程)

    1.简介 前面我们介绍了Selenium中TakeScreenshot类来截图,得到的图片是浏览器窗口内的截图.有时候,只截浏览器窗口内的图是不够的,而且TakeScreenshot截图只针对浏览器的 ...

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

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

随机推荐

  1. TLS、SSL

    TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 Hash.对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性. ...

  2. Mysql数据库体系

    Mysql数据库体系如下(手绘): 描述: 1.DBMS:database system management是数据库管理软件,平时我们使用的数据库的全称,是C/S架构(client/server)工 ...

  3. 使用 jQuery 中的淡入淡出动画,实现图片的轮播效果,每隔 2 秒钟切换一张图片,共 6 张图片

    查看本章节 查看作业目录 需求说明: 使用 jQuery 中的淡入淡出动画,实现图片的轮播效果,每隔 2 秒钟切换一张图片,共 6 张图片,切换到第 6 张后从头开始切换,在图片的下方显示 6 个小圆 ...

  4. JavaScript交互式网页设计 • 【第7章 jQuery操作 DOM】

    全部章节   >>>> 本章目录 7.1 DOM 对象和 jQuery 对象 7.1.1 DOM 对象 7.1.2 jQuery 对象 7.1.3 jQuery 对象和 DOM ...

  5. WPF使用MVVM(一)-属性绑定

    WPF使用MVVM(一)-属性绑定 简单介绍MVVM MVVM是Model(数据类型),View(界面),ViewModel(数据与界面之间的桥梁)的缩写,是一种编程模式,优点一劳永逸,初步增加一些逻 ...

  6. [ flask-migrate ] 记自己犯的一次低级错误

    问题描述 从github上pull了别人的项目学习,项目用flask-migrate来迁移数据库.查看了一下,作者把数据库文件 app.db 删除了,不过migrations文件夹留着的,因此我只需要 ...

  7. 【填坑往事】使用Rxjava2的distinct操作符处理自定义数据类型去重的问题

    最近碰到一个问题,自定义数据类型列表中出现了重复数据,需要去重.处理去重的办法很多,比如借助Set集合类,使用双重循环拿每一个元素和其他元素对比等.这里介绍一种简单而且比较优雅的方式:使用Rxjava ...

  8. Python路径表示方法

    一 更换为绝对路径的写法func1("C:\\Users\\renyc") 二 显式声明字符串不用转义(加r)func1(r"C:\Users\renyc") ...

  9. FastDFS的应用

    一.定义 FastDFS是由淘宝的余庆先生所开发的一个轻量级.高性能的开源分布式文件系统.用纯C语言开发,功能丰富: 文件存储 文件同步 文件访问(上传.下载) 存取负载均衡 在线扩容 适合有大容量存 ...

  10. Source Insight 4安装图文教程(附链接)

    Source Insight 4安装图文教程,附激活文件直链 下载链接:http://naturalporters.vicp.io/uploads/si4_kgen_unis.zip 直链没了,就用下 ...