【UI自动化测试】12_web自动化测试 _验证码处理和cookie

文章目录

  • 一、验证码
    • [1.1 验证码处理-方法](#1.1 验证码处理-方法)
    • [1.2 验证码-总结](#1.2 验证码-总结)
  • 二、cookie
    • [2.1 cookie-方法](#2.1 cookie-方法)
    • [2.2 如何通过cookie来跳过登录](#2.2 如何通过cookie来跳过登录)
    • [2.3 cookie-案例](#2.3 cookie-案例)
    • [2.4 cookie-总结](#2.4 cookie-总结)

一、验证码

验证码:一种随机生成的信息(数字、 字母、 汉字、 图片、 算术题) 等为了防止恶意的请求行为, 增加应用的安全性。

yacas 复制代码
为什么要学习验证码?  
- 在Web应用中,大部分系统在用户登录注册的时候都要求输入验证码,而我们在设计自动化测试脚本的时候,就需要面临处理验证码的问题。 

1.1 验证码处理-方法

说明: Selenium中并没有对验证码处理的方法, 在这里我们介绍一下针对验证码的几种常用处理方式

python 复制代码
方式:
	1). 去掉验证码
		(测试环境-采用)
	2). 设置万能验证码
		(生产环境和测试环境-采用)
	3). 验证码识别技术
		(通过Python-tesseract来识别图片类型验证码; 识别率很难达到100%)
	4). 记录cookie
     	(通过记录cookie进行跳过登录)

提示 :

python 复制代码
1. 去掉验证码、设置万能验证码:都是开发来完成,我们在这里不做讲解
2. 验证码识别技术:成功率不高,验证码种类繁多,不太适合
3. 记录cookie:比较实用,我们对它进行下讲解

1.2 验证码-总结

Python 复制代码
1、什么是验证码?
  - 一种随机生成信息(文字、数字、图片)
2、验证码作用
  - 防止恶意请求
3、验证码处理方式
  - ①去掉验证码(项目在测试环境、公司自己的项目)
  - ②设置万能验证码(测试环境或线上环境,公司自己项目)
  - ③使用验证码识别技术 (由于现在的验证码千奇百怪,导致识别率太低)
  - ④使用cookie解决(推荐)

二、cookie

1、Cookie是由Web服务器生成的, 并且保存在用户浏览器上的小文本文件, 它可以包含用户相关的信息。

2、Cookie数据格式: 键值对组成(python中的字典)。

3、Cookie产生: 客户端请求服务器, 如果服务器需要记录该用户状态, 就向客户端浏览器颁发一个Cookie数据。(服务器自动生成cookie)

4、Cookie使用: 当浏览器再次请求该网站时, 浏览器把请求的数据和Cookie数据一同提交给服务器, 服务器检查该Cookie, 以此来辨认用户状态。

yacas 复制代码
cookie的应用场景  

- 实现会话跟踪, 记录用户登录状态
- 实现记住密码和自动登录的功能
- 用户未登录的状态下, 记录购物车中的商品  

说明: Selenium中对cookie操作提供相应的方法

python 复制代码
方法:
# name:为cookie的名称
1. driver.get_cookie(name) 		--> 获取指定cookie
2. driver.get_cookies() 		--> 获取本网站所有本地cookies
3. driver.add_cookie(cookie_dict)  --> 添加cookie,cookie_dict:一个字典对象,必选的键包括:"name" and "value"

2.2 如何通过cookie来跳过登录

1、先找开发确认被测系统是否是使用cookie技术记录的用户登录状态。

  • 并不是所有的系统都是使用的cookie来进行用户身份记录,学习接口测试时候还有token和Session的方式

2、找开发继续确认记录用户登录状态cookie的name是什么。

3、手工登录,F12打开浏览器获取cookie信息。

  • 百度:记录用户身份凭证的cookie的name叫BDUSS。(以百度为例)
python 复制代码
dict_cus = {"name": "BDUSS", "value":"05VkJaelAtblhuV2hIQncxS0p2N1l4MVNrdmctZGxWREUwNWdYTjRwV1N3Y1pjRVFBQUFBJCQAAAAAAAAAAAEAAAD82ggPMTUwNjkxNTU1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJI0n1ySNJ9ca0"}

4、脚本打开浏览器网址之后,添加cookie到浏览器,刷新页面

python 复制代码
# 添加cookie到本地浏览器
driver.add_cookie(dict_cus)
# 刷新 必须进行刷新才能看到效果
driver.refresh()
python 复制代码
"""
    需求:使用cookie实现百度登录
    依赖kookies: BDUSS
"""
from time import sleep
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

# 2、打开浏览器-创建浏览器驱动对象
driver = webdriver.Chrome()
# 最大化浏览器
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)

driver.get("https://www.baidu.com")

# 添加cookie到本地浏览器
dict_cus = {"name": "BDUSS", "value":"05VkJaelAtblhuV2hIQncxS0p2N1l4MVNrdmctZGxWREUwNWdYTjRwV1N3Y1pjRVFBQUFBJCQAAAAAAAAAAAEAAAD82ggPMTUwNjkxNTU1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJI0n1ySNJ9ca0"}
driver.add_cookie(dict_cus)

# 获取指定cookie的信息
cookie = driver.get_cookie("BDUSS")
print("cookie:", cookie)

# 获取所有的cookies信息,列表形式
cookies = driver.get_cookies()
print("cookies内容为:", cookies)
for co in cookies:
    print(co['name'])

# 暂停2秒
sleep(2)
# 刷新 必须进行刷新才能看到效果
driver.refresh()

# 暂停 2
sleep(5)
# 关闭驱动对象
driver.quit()
python 复制代码
1 cookie 介绍:
	生成:由服务器生成
	作用:标识一次对话的状态(登录的状态)
	使用:浏览器自动记录cookie,在下一条请求时将cookis信息自动附加请求

2 应用:
	方法: 
		1. driver.get_cookies() # 获取所有的cookie
		2. driver.add_cookies({字典}) # 设置cookie
	步骤: 
		1. 打开百度url driver.get("http://www.baidu.com")
		2. 设置cookie信息: driver.add_cookie({"name":"BDUSS","value":"根据实际情况编写"})
		3. 暂停2秒以上
		4. 刷新操作 
	注意: 
		1. 以上百度BDUSS所需格式为百度网站特有,别的网站请自行测试。
		2. 必须进行刷新操作。
相关推荐
kyriewen118 小时前
你点的“刷新”是假刷新?前端路由的瞒天过海术
开发语言·前端·javascript·ecmascript·html5
极梦网络无忧9 小时前
OpenClaw 基础使用说明(中文版)
python
codeJinger9 小时前
【Python】操作Excel文件
python·excel
XLYcmy10 小时前
一个针对医疗RAG系统的数据窃取攻击工具
python·网络安全·ai·llm·agent·rag·ai安全
Islucas10 小时前
Claude code入门保姆级教程
python·bash·claude
skywalk816310 小时前
Kotti Next的tinyfrontend前端模仿Kotti 首页布局还是不太好看,感觉比Kotti差一点
前端
萝卜白菜。10 小时前
TongWeb7.0相同的类指明加载顺序
开发语言·python·pycharm
赵钰老师10 小时前
【ADCIRC】基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟实践技术应用
python·信息可视化·数据分析
爬山算法11 小时前
MongoDB(80)如何在MongoDB中使用多文档事务?
数据库·python·mongodb