Selenium自动化测试 —— 通过cookie绕过验证码的操作!

news2024/11/19 3:20:36

验证码的处理

  对于web应用,很多地方比如登录、发帖都需要输入验证码,类型也多种多样;登录/核心操作过程中,系统会产生随机的验证码图片,进行验证才能进行后续操作

解决验证码的方法如下:

1、开发做个万能验证码(推荐)
2、测试环境关闭验证码功能(推荐)(开发配置)
3、图片识别技术(不稳定)
4、调用开发生成验证码接口(和开发配合)
5、第三方验证码平台(打码兔)
6、cookie绕过验证码(推荐)

cookie处理

假如我们需要验证浏览器中是否存在cookie,因为基于真实的cookie是无法通过白盒和集成测试完成的,webdriver可以读取、添加和删除cookie信息

webdriver操作cookie的方法如下:

get_cookies() 获取所有cookie信息
get_cookie(name) 返回特定name有cookie信息
add_cookie(cookie_dict) 添加cookie,必须有name和value值
delete_cookie(name) 删除特定部分的cookie信息
delete_all_cookies() 删除所有cookie信息

备注:add_cookie()里面放置字典参数,cookie字典一般需要包含name、value、domain、path等字段,如果遇到cookie有Expirse字段,要去掉

举例实战:利用cookie完成网站的免密码应用

第一步的代码思路:只是为了把登录后的cookie信息写入到excel中为后面的免密码登录做准备工作

1、打开网站的登录页面
2、等待60s,这个时间手动去输入用户名、密码、验证码登录
3、获取登录之后cookie
4、把登录之后cookie写入到excel中

代码如下:

前置条件:导入xlwt库

import os
import time
import xlwt
from selenium import webdriver
 
current_path = os.path.dirname(os.path.abspath(__file__))  # 当前路径
driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe')  # driver路径
driver = webdriver.Chrome(executable_path=driver_path)  # Firefox,Ie等
 
driver.get('http://47.107.187.54/zentao/www/index.php?m=user&f=login')  # 打开禅道地址
 
workbook = xlwt.Workbook(encoding='utf-8')  # 设置workbook对象
sheet = workbook.add_sheet('Sheet01')  # 新增sheet页名称
sheet.write(0,0,'number')  # 通过行列坐标写入值
sheet.write(0,1,'name')
sheet.write(0,2,'value')
sheet.write(0,3,'path')
sheet.write(0,4,'domain')
 
time.sleep(30)  # 手动输入 用户名、密码、验证码时间
cookies = driver.get_cookies()  # 获取登录后的cookie信息
 
for i in range(1,len(cookies)+1):  # 遍历cookie的值,并通过行列坐标写入值
    sheet.write(i,0,i)
    sheet.write(i, 1,cookies[i-1]['name'])
    sheet.write(i, 2,cookies[i-1]['value'])
    sheet.write(i, 3,cookies[i-1]['path'])
    sheet.write(i, 4,cookies[i-1]['domain'])
 
workbook.save('test.xls')  # 保存并设置excel的名称

第二步的代码思路:

1、打开网站的登录页面
2、用add_cookie()方式把excel中的cookie信息添加到cookie中
3、刷新网站,即可完成自动登录操作

代码如下:

前置条件:导入xlrd库

import os
import time
import xlrd
from selenium import webdriver
 
 
current_path = os.path.dirname(os.path.abspath(__file__))  # 当前路径
driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe')  # driver路径
driver = webdriver.Chrome(executable_path=driver_path)  # Firefox,Ie等
 
driver.get('http://47.107.187.54/zentao/www/index.php?m=user&f=login')  # 打开禅道地址
workbook = xlrd.open_workbook('test.xls')  # 打开指定的excel文件
sheet = workbook.sheet_by_name('Sheet01')  # 找到指定的sheet页
 
# 遍历sheet页中有效的行,在把excel中cookie信息添加到cookie中,实现免登录
for i in range(1,sheet.nrows):
    driver.add_cookie( {'name':sheet.cell_value(i,1),'value':sheet.cell_value(i,2),
                       'path':sheet.cell_value(i,3),'domain':sheet.cell_value(i,4)} )
 
 
time.sleep(3)
driver.refresh()  # 刷新
 

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

 

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

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

相关文章

如何学习微服务Spring Cloud

简单来说,就是“三大功能,两大特性”。 三大功能是指微服务核心组件的功能维度,由浅入深层次递进;而两大特性是构建在每个服务组件之上的高可用性和高可扩展性。别看微服务框架组件多,其实你完全可以按照这三大功能模块…

外卖小程序开发指南:打造完美的点餐体验

第一步:项目设置和初始化 首先,您需要选择一个适合您的开发平台,例如微信小程序、支付宝小程序或其他移动应用平台。接下来,创建一个新的小程序项目,并初始化所需的文件和目录。 示例代码(微信小程序&am…

项目进度网络图

概念 项目网络图是项目所有活动及其之间逻辑关系(依赖关系)的一个图解表示,并从左到右来表示项目的时间顺序。 可手工编制也可用计算机实现。可包括整个项目的全部细节,也可包含一个或多个概括性活动,还相应伴有一个…

向表中的指定列插入数据

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 练习:向test02表,所有列,插入数据 复习下前面的 mysql> #插入记录 mysql> insert into test02 values(1, 张三, 男, 100.5); Query OK, 1 ro…

【密码学补充知识】

🔑密码学🔒概述 📕 1.基本概念 明文 : 要交换的信息 密文 : 明文经过一组规则变换成看似没有意义的随机消息。 加密 : 明文经过一组规则变换成密文的过程 解密 : 密文恢复出明文的过程 加…

【广州华锐互动】鱼卵孵化VR线上教学实训软件

随着科技的发展,教育方式也在不断地进行创新。VR研发公司广州华锐互动,为某院校开发了鱼卵孵化VR线上教学实训软件,可以帮助学生更好地理解鱼类繁殖和养殖的过程,还可以让他们在虚拟环境中进行实践操作,提高他们的技能…

HDFS编程实践-从HDFS中下载指定文件到本地

前言:Hadoop采用java语言开发,提供了Java Api与HDFS进行交互 先要把hadoop的jar包导入到idea中去 为了能编写一个与hdfs交互的java应用程序,一般需要向java工程中添加以下jar包 1)/usr/local/hadoop/share/hadoop/common目录下…

Docker部署Nacos注册中心

文章目录 一、部署MySQL数据库并导入Nacos初始化SQL二、部署Nacos注册中心三、验证Nacos 一、部署MySQL数据库并导入Nacos初始化SQL 1、准备工作 docker pull mysql:8.0.27 Pwd"/data/software/mysql" mkdir ${Pwd}/{data,logs} -p chmod 777 ${Pwd}/logs2、添加配…

Matlab图像处理-彩色图像灰度化

图像预处理 预处理的具体操作是将车牌彩色图像灰度化,利用直方图均衡化、中值滤波、边缘提取、形态学运算等数字图像处理方法,确定车牌位置,提高车牌定位精确度及识别正确率。 彩色图像灰度化 图像灰度化本质就是通过一定的方法将彩色图像…

定时器的编码器接口

对应手册编码器接口14.3.12 实现代码 实现旋转编码器计次,与之前的在定时器中断时实现的旋转编码器计次实现内容相同,但是方式不同,之前的是通过触发外部中断,通过中断函数来实现手动计次加一;这次不同,是…

电脑版剪映怎么倒放?

1.打开一个素材 2.添加到时间轨道 3.右击轨道素材 弹出的选项钟选择,基础编辑》倒放!

【Java开发】Redis位图实现统计日活周活月活

最近研究了使用 Redis 的位图功能统计日活周活等数据,特来和大家分享下,Redis 位图还可用于记录用户签到情况、判断某个元素是否存在于集合中等。 1 Redis 位图介绍 Redis 位图是一种特殊的数据结构,它由一系列位组成,每个位只能…

Spring Cloud Alibaba Gateway 全链路跟踪TraceId日志

前言 凡是文中需要注册到nacos的都需要这个jar包 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>凡是使用config jar包的都需要写bootstrap.prop…

多维时序 | MATLAB实现WOA-CNN-BiLSTM-Attention多变量时间序列预测(SE注意力机制)

多维时序 | MATLAB实现WOA-CNN-BiLSTM-Attention多变量时间序列预测&#xff08;SE注意力机制&#xff09; 目录 多维时序 | MATLAB实现WOA-CNN-BiLSTM-Attention多变量时间序列预测&#xff08;SE注意力机制&#xff09;预测效果基本描述模型描述程序设计参考资料 预测效果 基…

Tuya MQTT 标准协议是什么?

TuyaLink 协议是涂鸦 IoT 开发平台面向物联网开发领域设计的一种数据交换规范&#xff0c;数据格式为 JSON&#xff0c;主要用于设备端和涂鸦 IoT 开发平台的双向通信&#xff0c;更便捷地实现了设备端和平台之间的业务数据交互。 设备的通信方式也是多种多样的。无线通信方式…

什么是Redux?它的核心概念有哪些?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是Redux&#xff1f;⭐ 它的核心概念有哪些&#xff1f;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发…

【Go】rsrc不是内部或外部命令、无法将“rsrc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方法

前言 想尝试用go创建一个桌面应用程序&#xff0c;然后查了下决定用 walk。 我们要先下载walk&#xff0c;这里 官方链接 按照官方文档&#xff0c;我们先用go get命令下载。 go get github.com/lxn/walk然后分别创建好了 main.go、main.manifest 文件&#xff0c;代码如下…

Web自动化框架中验证码识别处理全攻略,让测试更得心应手!

前言&#xff1a; 随着Web应用程序的不断发展&#xff0c;自动化测试已成为项目开发中必不可少的一环。然而&#xff0c;验证码的出现却经常会使自动化测试变得更具挑战性。为了解决这个问题&#xff0c;我们需要一种方法来自动识别和处理验证码&#xff0c;从而提高自动化测试…

Spring面试题11:什么是Spring的依赖注入

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说Spring的依赖注入 依赖注入(Dependency Injection)是Spring框架的一个核心特性,它是指通过外部容器将对象的依赖关系注入到对象中,从而…

在大厂做外包的软件测试工程师,如今发展怎么样了?

前言 不久前&#xff0c;许久没联系的大学室友出差来了魔都&#xff0c;趁此机会叫上了昔日的两三好友&#xff0c;一起小酌了一杯&#xff0c;觥筹交错中&#xff0c;得知了大学室友今年开始和朋友一同创业&#xff0c;时隔多年终于从外包公司&#xff0c;成为了一名“正式员…