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()  # 刷新
总结:

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

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

软件测试面试文档

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

视频文档获取方式:

这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。

相关推荐
爱记录的小磊7 小时前
java-selenium自动化快速入门
java·selenium·自动化
互联网杂货铺9 小时前
如何使用Postman做接口自动化测试
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
nvvas20 小时前
Python Selenium固定端口测试chrome浏览器绕过登录验证
chrome·python·selenium
车载测试工程师1 天前
Wireshark 筛选功能详解:语法与示例
网络·tcp/ip·测试工具·wireshark
测试杂货铺1 天前
postman接口测试
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
金玉满堂@bj2 天前
《Playwright:微软的自动化测试工具详解》
测试工具·microsoft·自动化
测试者家园2 天前
接口测试不再难:智能体自动生成 Postman 集合
软件测试·人工智能·测试工具·postman·agent·智能化测试·测试开发和测试
不念霉运2 天前
关键领域软件测试新范式:如何在安全合规前提下提升效率?
软件测试·测试工具·安全·开源·desecvops·ci/di
夏日玲子2 天前
Selenium工作原理
selenium·测试工具
风掣长空2 天前
[软件测试]:什么是自动化测试?selenium+webdriver-manager的安装,实现你的第一个脚本
selenium·测试工具