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

验证码的处理
  对于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()  # 刷新
总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

文档获取方式:

加入我的软件测试交流群:822269834免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

metersphere 创建场景, 自动动态变换参数值,实现接口自动化测试。

创建场景 创建产品变量 添加数值 添加后点击确定 点击右下角 号 点击 循环控制器 写循环 创建/导入接口 选择运行环境, 没有的话新建一个 需要点击引用环境 保存后点击 调试 成功做到每次请求的参数是列表里的 10

北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595(仿真方法验证)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 使用FPGA开发板验证的教程,请参考 北邮…

【蓝桥杯省赛真题44】Scratch像素画板 蓝桥杯少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

scratch像素画板 第十四届青少年蓝桥杯scratch编程省赛真题 一、题目要求 编程实现 1.点击绿旗,角色、背景如图所示(三种颜色调色盘、清除图标及方格角色请自行创建,点击绿旗后立刻呈现下图效果); 2.用鼠标点击红色调色盘,红色调色盘变为选中状态(如下图所示),此时鼠…

不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程!

Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍…

树与二叉树堆:堆

堆的概念: 一般是把数组的数据在逻辑结构上看成一颗完全二叉树,如下图所示。 注意:别将C语言中的堆和数据结构的堆混为一谈,本文所讲的数据结构的堆是一种完全二叉树,而C语言中的堆其实是一种内存区域的划分 堆的分类…

【链表的说明、方法---顺序表与链表的区别】

文章目录 前言什么是链表链表的结构带头和不带头的区别 链表的实现(方法)遍历链表头插法尾插法任意位置插入一个节点链表中是否包含某个数字删除链表某个节点删除链表中所有关键字key清空链表所有节点 ArrayList 和 LinkedList的区别总结 前言 什么是链…

【Ubuntu】Ubuntu arm64 部署 Blazor Server 应用

部署步骤 发布安装运行环境:dotnet-sdk(必装)、aspnetcore-runtime、dotnet-runtime安装证书设置环境变量:临时变量、当前用户永久变量、所有用户的永久变量运行:终端运行、后台运行 基本情况 开发系统环境 系统&am…

RabbitMQ消息队列快速入门

RabbitMQ消息队列快速入门 初始MQ MQ全称为Message Queue,即消息队列,是在消息的传输过程中保存消息的容器。它是典型的生产者-消费者模型。 生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。消息的生产和消费都是异步的&am…

SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

SQL DELETE 语句 SQL DELETE 语句用于删除表中的现有记录。 DELETE 语法 DELETE FROM 表名 WHERE 条件;注意:在删除表中的记录时要小心!请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE子句,将会删除表中的所…

战备器材管理系统-部队物资仓库管理系统

一、项目背景 传统的战备物资管理,一般依赖于一个非自动化的、以纸张文件为基础的系统来记录、追踪进出的货物,完全由人工实施仓库内部的管理,因此仓库管理的效率极其低下。对此,我们运用无线射频技术(RFID)的仓库智能管理系统&am…

Fiddler抓包看这篇就够了:fiddler设置弱网测试

弱网测试 概念:弱网看字面意思就是网络比较弱,我们通称为信号差,网速慢。 意义:模拟在地铁、隧道、电梯和车库等场景下使用APP ,网络会出现延时、中断和超时等情况。 自动化测试相关教程推荐: 2023最新自…

基于单片机加热炉多参数检测和PID炉温系统

**单片机设计介绍, 基于单片机加热炉多参数检测和PID炉温系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的公交安全预警系统可以被设计成能够实时监测公交车辆的行驶状态,并在发生异常情况…

金蝶云星空套打设计

文章目录 金蝶云星空套打设计下载登录打开需要创建套打的单据新建套打模板数据中心-发货通知单-设置预览 金蝶云星空套打设计 下载 登录 打开需要创建套打的单据 KD开头,是标准产品预设。 新建套打模板 默认A4纸 默认插入三行三列。 拖入文本,填写内容…

计算机基础知识54

ORM的介绍 # ORM是什么? 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(增、删、改、查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql、oracle…

map的基础定义及运用

Map 1 使用 1 声明 /*声明map*/map<int, string> myMap {{1, "Apple"}, {2, "Banana"}, {3, "Orange"}};2 插入元素 myMap.insert(make_pair(4, "Graphes"));3 通过访问键查找和访问元素 cout << myMap[2] <<…

Ubuntu Server download

前言 Ubuntu——公共云、数据中心和边缘上最受欢迎的 Linux 发行版。自成立以来&#xff0c;Ubuntu 一直在获得市场份额&#xff0c;截至今天已接近 50%。 Ubuntu Server download VersionUbuntu Server 其它主机型号版本Ubuntu AMD历史版下载百度云Ubuntu Server all Ubuntu…

小白也能看懂的国内外 AI 芯片概述

随着越来越多的企业将人工智能应用于其产品&#xff0c;AI芯片需求快速增长&#xff0c;市场规模增长显著。因此&#xff0c;本文主要针对目前市场上的AI芯片厂商及其产品进行简要概述。 简介 AI芯片也被称为AI加速器或计算卡&#xff0c;从广义上讲只要能够运行人工智能算法…

本机idea连接虚拟机中的Hbase

相关环境&#xff1a; 虚拟机&#xff1a;Centos7 hadoop版本:3.1.3 hbase版本:2.4.11 zookeeper版本:3.5.7 Java IDE:IDEA JDK&#xff1a;8 步骤 步骤一&#xff1a;在idea创建一个maven项目 步骤二&#xff1a;在虚拟机里找到core-site.x…

【C++】map multimap

文章目录 1.map介绍2.map的使用3.multimap介绍4.multimap的使用 1.map介绍 map的文档 翻译&#xff1a; map是关联容器&#xff0c;它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。 在map中&#xff0c;键值key通常用于排序和惟一地标识元素&#x…

四川芸鹰蓬飞:抖店运营的时候注意什么?

抖店作为一个短视频平台&#xff0c;吸引了越来越多的商家加入。在抖店上进行有效的运营是提高销量和曝光度的关键。那么&#xff0c;抖店怎么设置运营呢&#xff1f;有哪些方法可以帮助商家在这个竞争激烈的平台上脱颖而出呢&#xff1f; 一、抖店怎么设置运营&#xff1f; 首…