在自动化测试过程中,经常会遇见有验证码的场景,例如:用户登录,用户支付,用户注册,用户重置密码,身份确认等场景。
验证码主要分为以下几种:
1.图文验证码(普通验证码)
基本由数字,中文,英文等组合而成,用户在文本框中输入验证码进行校验。如下图:
2. 短信验证码
输入手机号,点击获取验证码,将手机上获取到的验证码输入到文本款中进行验证。如下图:
3.滑动验证码
根据提示绘图或者拖动图片完成拼图
或者:
4.识物点击验证码
根据目标(电饭锅)选中图中相关的物体
自动化测试遇到验证码,处理过程:
1.第一种处理办法:修改代码,直接绕过去,取消前后端代码对验证码的校验
适用于场景:主要是 测试需求功能 是否正确,这里暂时对验证码需要不高,可屏蔽。这几种验证码都可以采用这个办法
2.第二种处理方法:万能验证码
适用于场景:主要是 测试需求功能 是否正确,这里暂时对验证码需要不高。相较于第一种而言,不需要隐藏代码,只需要在测试环境中对于所有使用验证码的地方给与通过:图文验证码和短信验证码可设定一个万能验证码,其他两种行为验证码返回true。这几种验证码都可以采用这个办法
3.第三种处理办法:sleep.time(等待时间),设置等待时间,测试人员手动完成验证码校验。这几种场景都可以使用。优点:不需要修改代码也不需要屏蔽任何代码,同时可以进行验证码与功能联合起来的测试。缺点:不是完全的自动化,需要人为干预。主要用于初期脚本调试或者初期时间紧张查看验证码和功能是否完美衔接。
4.第四种处理办法:保存验证码(数据库或者文件),主要用于图文验证码和手机短信验证码。以手机验证码为例进行原理说明:程序生成5位随机数,一方面调用短信接口,将随机数发送到用户手机上,一方面将随机数存入数据库。用户在前端输入验证码之后与数据库的验证码进行对比,相同则验证码通过,否则验证码验证失败。自动化测试可以从数据库读取验证码进行前端验证码元素send_keys来进行验证码的验证。好处:自动化测试完美模拟用户的操作过程。
5.第五种处理方法:从内存中读取验证码(cookie或者session),部分网站会将验证码临时存储于session内存中,可以通过读取session来获取验证码,进行脚本自动化测试研发。仅适用于图文验证码和短信验证码
6.第六种处理方法:绕过验证码。用户登陆之后保存用户的token信息,未到期之前用户再次登可直接使用token登录,这种方式绕过了验证码的校验。四种验证码都可以使用
7.第七种处理方法:采用第三方的api接口对验证码进行识别。目前网上有很多免费的或者很便宜的验证码接口可供测试人员使用,比如易源网站。原理:我们调用易源_验证码 提供的接口进行参数传入,上面api有详细的参数说明,(特别是验证码类别这个参数,中文,英文,数字互相组合时,要传递不同的参数)识别错误返回-1,识别成功返回验证码,我们可根据return的value进行前端页面验证码元素的输入,来完成前端页面的自动化测试。目前第7中只能用于语音验证码,图文验证码。
来源:CSDN
作者:lr936428775
链接:https://blog.csdn.net/lr936428775/article/details/104101421