前言
对于测试人员来说,不管是进行性能测试还是自动化测试其验证码处理都是一个比较棘手的问题;但是对于web 应用来说,大部分的系统在用户登录时都要求用户输入验证码,且验证码的种类众多,例如:纯数字、纯字母、汉字组合、数学运算题、滑动坐标、图片、短信、邮箱、语音等等。
验证码的作用
验证码是目前大多网站所支持并使用于注册登录的。就在于其作用能有效防止恶意登录注册,验证码每次都不同,这就可以排除,用其他病毒或者软件自动申请用户及自动登陆,且还可基于网址性能减少用户的并发。
实现原理
验证码于服务器端生成,发送给客户端,并以图像格式显示(当然会对图像进行加以处理:添加干扰项、添加干扰像素、添加噪点等)。客户端提交所显示的验证码,客户端接收并进行比较,若比对失败则不能实现登录或注册,反之成功后跳转相应界面。
自动化中解决验证码一般拥有以下几种解决方案:
去掉验证码
这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员不少麻烦,如果自动化脚本是要在正式环境跑,这样就给系统带来了一定的风险。
设置万能码
去掉验证码的主要是安全问题,为了应对在线系统的安全性威胁,可以在修改程序时不取消验证码,而是程序中留一个“后门”---设置一个“万能验证码”,只要用户输入这个“万能验证码”,程序就认为验证通过,否则按照原先的验证方式进行验证。
保留一个资源
如果是图片资源的话,实际就是在指定的文件夹资源库中进行随机一张,只需要将服务器上的所有图片全部删除只留一张,相当于也是固定验证码。
光学字符识别
例如可以通过 Python-tesseract 来识别图片验证码,Python-tesseract 是光学字符识别 Tesseract OCR 引擎的 Python 封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF 等)。不过,目前市面上的验证码形式繁多,目前任何一种验证码识别技术,识别率都不是100% 。
实现步骤:
-
通过pycharm或者pip安装第三方模块pytesseract:
pip install pytesseract
2.使用pycharm或者pip进行安装图像处理库:
pip install Pillow
注意:针对python2.X版本的话,则使用的库是PIL,但是在python3.X版本后图像处理库必须安装Pillow或者Pillow-PIL
3.安装ocr识别库:可通过官网地址进行下载,现如今最新版本为5.0,下载地址是:https://github.com/UB-Mannheim/tesseract/wiki
如果上述地址访问失败多刷新几次即可;
安装步骤直接下一步即可,但是安装完后必须要将其根目录添加到Path环境变量中;
例如: