UI自动化测试时,需要对验证码进行识别处理,有很多方式,每种方式都有自己的特点,以下是一些常用处理方法,仅供参考。
1、去掉验证码
从自动化的本质上来讲,主要是提升测试效率等,但是为了去研究验证码以及提升验证码的识别效率,是需要投入比较大的时间的;
去掉验证码无疑是最简单的方式,而且对于开发而言这样做,工作量也不是很大;
但是建议在测试环境使用,生产环境禁用,因为存在安全问题。
2、设置万能码
这个是笔者刚开始做自动化时首选的一个处理方法;
因为既测试到了验证码的功能,而且也不用投入太大的精力去研究如何进行验证码识别;
另外对于开发来说,内置一个万能验证码也是非常简单的事情;
对于写自动化脚本的人来说也是非常的方便,效率也高;
但这个万能验证码仅限相关人员知道,避免存在安全隐患。
03保留一个资源
04光学字符识别
其实就是通过Python-tesseract模块来只能识别图片中的验证码;
Python-tesseract是光学字符识别Tesseract OCR的python封装类;
其能够读取大部分常规图片文件,比如JPG、GIF、PNG、TIFF等;
这个笔者也尝试过,因为现在的图片验证码越来越复杂,其实有时候识别率并不高;
下边我们尝试着使用一下。
4.1 识别对象
我们收集了几个图片验证码(来源于网络,仅供参考):从左到右依次是image01.jpg-image04.jpg:
4.2 pytesseract安装
直接使用命令安装即可: - <font size="3">pip install pytesseract</font>
复制代码
4.4 OCR安装
OCR官网 https://github.com/UB-Mannheim/tesseract/wiki
按照提示安装完成:
配置环境变量,将其根目录添加到path环境变量中:
4.5 识别原理
基本思路是通过图片降噪、图片切割等,输出图像文本;
图片降噪就是将图片中一些不需要的信息去除,比如背景、干扰像素、干扰线等。
如果验证码是彩色的背景,其实就是把每个像素放在五维空间,即X、Y、R、G、B;
X、Y是像素的二维平面坐标,RGB代表像素所对应的颜色。
4.6 处理过程
4.6.1 转灰度处理
导入需要的包:
- <font size="3">from PIL import Image</font>
复制代码
|