软件测试自动化验证码,自动化测试如何解决验证码的问题
解决验证码最基础的几种方法其实不叫解决,只能算是避过验证码,真正的验证码识别,需要用的很多技术,图像识别源码分析,网络数据流等等。验证码只是为了防止防止用户误操作,或者防止某些刷子,减少服务器的压力而设置的,如果真的是为了自动化测试,我们完全可以屏蔽改功能。
对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性。但对于测试人员来说,不管是进行性能测试还是自动化测试都是一个棘手的问题。
下面来谈一下处理验证码的几种方法。
去掉验证码
这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员不少麻烦,如果自动化脚本是要在正式环境跑,这样就给系统带来了一定的风险。
设置万能码
去掉验证码的主要是安全问题,为了应对在线系统的安全性威胁,可以在修改程序时不取消验证码,而是程序中留一个“后门”---设置一个“万能验证码”,只要用户输入这个“万能验证码”,程序就认为验证通过,否则按照原先的验证方式进行验证。
#coding=utf-8importrandom#生成0到10之间的随机数#d = random.uniform(0,10)#print d#生成一个1000到9999之间的随机整数d = random.randint(1000,9999)printu"生成的随机数:%d"%d i = input(u"请输入随机数:")printiifi == d:printu"登录成功!!"elifi == 1111:printu"登录成功!!"else:printu"请重新输入验证码!"
运行结果:
>>> ================================ RESTART ================================ >>> 生成的随机数:3764 请输入随机数:1111 1111 登录成功!! >>> ================================ RESTART ================================ >>> 生成的随机数:3763 请输入随机数:3763 3763 登录成功!! >>> ================================ RESTART ================================ >>> 生成的随机数:1928 请输入随机数:1354646 1354646 请重新输入验证码!
random用于生成随机数
randint()方法用于生成随机整数,传递的两个参数分别是随机数的范围,randint(1000,9999)第二个参数要大于第一个参数。
我们要求用户输入随机数,并且对用户输入做判断,如果等于生成的随机数那么,登录成功,如果等于1111也算登录成功,否则失败。那么等于1111的判断就是一个万能码。
验证码识别技术
例如可以通过Python-tesseract 来识别图片验证码,Python-tesseract是光学字符识别Tesseract OCR引擎的Python封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF等)。不过,目前市面上的验证码形式繁多,目前任何一种验证码识别技术,识别率都不是100% 。
记录cookie
适用于UI自动化测试,且目前在大部应用的用户名密码不记录在cookie 或 进行加密处理。
通过向浏览器中添加cookie 可以绕过登录的验证码,这是比较有意思的一种解决方案。我们可以在用户登录之前,通过add_cookie()方法将用户名密码写入浏览器cookie ,再次访问系统登录链接将自动登录。例如下面的方式:
....#访问xxxx网站driver.get("http://www.xxxx.cn/")#将用户名密码写入浏览器cookiedriver.add_cookie({'name':'Login_UserNumber','value':'username'})driver.add_cookie({'name':'Login_Passwd','value':'password'})#再次访问xxxx网站,将会自动登录driver.get("http://www.xxxx.cn/") time.sleep(3) .... driver.quit()
使用cookie进行登录最大的难点是如何获得用户名密码的name ,如果找到不到name 的名字,就没办法向value 中输用户名、密码信息。
可以通过get_cookies()方法来获取登录的所有的cookie信息,从而进行找到用户名、密码的name 对象的名字。
软件测试自动化验证码,自动化测试如何解决验证码的问题相关推荐
- 自动化测试如何解决验证码的问题
注意:本标题的"自动化测试" 包括性能测试 与UI级的自动化测试 经常会被问到如何解决验证码的问题,在此记录一下我所知道的几种方式. 对于web应用来说,大部分的系统在用户登录时都 ...
- 软件测试自动化分类,自动化测试的主要分类
原标题:自动化测试的主要分类 在敏捷开发流程中,自动化测试涉及到下面重要四种类型的测试. 单元测试(Unit Test,UT) 关注某一个函数,模块的正确性,一般需要开发人员编写相关的测试代码来进行自 ...
- 软件测试自动化验证码,借助 OCR,协助绕过 web 自动化测试中一些简单验证码问题。...
前言 做软件自动化的时候,最怕就是在登录的时候遇到验证码.以前的经验是让开发设置一个万能码或者把验证码屏蔽掉.现在人工智能发展很快,有一些库可以帮助我们识别这验证码,将这些库引入到我们自动化代码中,就 ...
- Interface接口自动化登录图文验证码问题的解决办法
简介:我这段时间新进了一家医疗公司,为了测试的质量和效率能提升,我们需要做接口自动化测试,碰到的第一个拦路虎就是登录时的验证码,本来我是叫开发帮忙在测试环境去掉,线上环境再加上,但是开发觉得麻烦,说为 ...
- 自动化测试解决验证码问题
现在的很多网站在登陆时都需要验证码,倘若遇到自动化测试时,怎么解决呢? 验证码大概有以下几种: 有的是图片验证码:图片上显示数字,汉字,英文数字以及算术题等: 有短信/邮箱发送验证码:一般为四位/六位 ...
- python selenium UI自动化解决验证码的4种方法
测试环境 windows7+ firefox50+ geckodriver # firefox浏览器驱动 python3 selenium3 selenium UI自动化解决验证码的4种方法:去掉验证 ...
- 自动化测试中的验证码问题
做自动化测试的同学在面试的时候经常会遇到这问题,而且我们在实际的工作中也会遇到这个问题,那么这问题到底该怎么处理? 下面给出了面试过程中常见的相关面试题供大家参考: 01 在做自动化登陆的同时,如何绕 ...
- 浅谈自动化测试中的验证码处理方法小总结
今天跟大家聊一聊自动化测试中的验证码处理方法一些小总结,希望对你们有帮助,有说的不好的地方,还请多多指教! 目前,不少网站在用户登录.用户提交信息登登录和输入的页面上使用了验证码技术.验证码技术可以有 ...
- web自动化Python获取Redis缓存验证码
在进行UI自动化测试过程中,有些情况下登录可能需要进行验证码验证 自动化测试中图片验证码是一个很常见的问题,解决的方法也有很多,比如: 使用OCR识别的技术,对验证码的图片进行字符识别 让开发提供一个 ...
最新文章
- 4698: Sdoi2008 Sandy的卡片
- 66319d电源使用说明书_你用对电暖器了吗?冬季使用家电应该注意这四点
- 计算机选购知识点,笔记本选购知识点,找准自己的需求才是王道
- 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的...
- mysql传参为数组,将数组传递给MySQL存储例程
- 深度学习优化算法-AdaDelta算法
- 怎样清理软件卸载残留文件和系统垃圾
- 20221106EXCEL/腾讯文档 部分常用函数嵌套用法总结
- [EXCEL] 宏的录制、调用和删除
- HTML+JS+websocket 实现联机“游戏王”对战(十三)- 实机演示视频
- 对极几何-三角测量-知识点
- 机器视觉——旋转中心的标定
- 字节社交转向:放弃飞聊,押注元宇宙社交
- java10以内的加减法_Java实现随机10道10以内加减法的代码详解
- 基于Python实现制作的塔防游戏
- com.alibaba.otter.canal.protocol.exception.CanalClientException
- Pacific Atlantic Water Flow 太平洋大西洋水流问题
- 短视频软件开发新功能 观看视频时长可领取金币奖励
- 北京 春暖花开沙拂面
- html查看日历,找出万年历的日历