自动化测试难题,验证码如何解决

一.去掉验证码

这是最简单的解决方案, 对于开发人员来说, 只是将验证码的相关代码注释掉就行, 但这种方案只能在测试环境下进行, 在线上环境下会对系统产生一定的风险.

二.设置万能验证码

去掉验证码会产生安全问题, 线上系统的安全性很重要不能忽略, 这时我们可以采用不取消验证码, 而是在程序代码中留一个"后门" 也就是预留一个万能的验证码, 只要输入这个固定的万能验证码, 则认为验证通过.

三.验证码识别技术

步骤1: 安装识别验证码需要的python库
pip install pillow
pip install pytesseract
步骤2: 通过代码识别图片尺寸并获取识别后的验证码
from io import BytesIO
from PIL import Image
import pytesseract
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.maximize_window()
driver.get('http://localhost/index.php/Home/user/login.html')
# 保存页面
scree = driver.get_screenshot_as_png()
# 定位图片
img = driver.find_element(By.ID, 'verify_code_img')
# 输出图片 及尺寸大小
print(img.location, img.size)
location = img.location #图片坐标轴
size = img.size # 图片大小
left = location['x'] # x轴
top = location['y'] # y轴
right = size['width'] + left # 宽度
bottom = size['height'] + top # 高度
verify_img = Image.open(BytesIO(scree)).crop((left,top,right,bottom))
verify_img.save('verify_img.png')
image1 = Image.open('verify_img.png')
text = pytesseract.image_to_string(image1)
print(text)

识别技术成功率一般低于30%, 仍然需要不断的进行优化和练习才能够提升.

四.记录cookie

以BaiDu为案例:

步骤1: 通过浏览器登录正常的百度账号, 如下图:

步骤2: 使用抓包工具或者打开浏览器的开发者工具栏,找到Application中的Cookies选项:

找到最最重要的两个数据: "BAIDUID" "BDUSS"

步骤3:

编写自动化测试脚本, 跳过登录
from time import sleep
from selenium import webdriver
 
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com")
 
# 添加Cookie
driver.add_cookie({'name':'BAIDUID','value':'1699E29FCB27B74AE688991269EE7212:FG=1'})
driver.add_cookie({'name':'BDUSS','value':'FZTndRRnBlSjNMQUZsNzNPSzdCZnp0MU83TX5lLU9XaDJrdHloTS1odWpJcDlpRVFBQUFBJCQAAAAAAAAAAAEAAADv1Oew0rvT79K7yMvJ-s7eu9oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKOVd2KjlXdiOH'})
 
# 刷新页面
driver.refresh()
sleep(5)
#关闭浏览器
driver.quit()

刷新浏览器,显示已登录效果:

 

使用cookie进行登录绕过的最大难点是如何来获取用户的cookie相关数据, 最重要的是 name和key这两个参数.

我们可以通过selenium中的 driver.get_cookies()方法来获取, 数据为 [{"key1":"value1"},{"key2":"value2"}...] 列表嵌套字典格式,先对列表数据进行遍历,再来进一步确认需要使用的数据.

最后:

最简单安全行之有效的方式就是设置万能验证码, 当然愿意在技术方向更进一步的同学, 也可以通过验证码识别来实现.

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的影城管理系统,源码+数据库+论文答辩+毕业论文+视频演示 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控界面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。 关键词:小徐影城管理系统;Spring Boot框架,MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值