图像识别之验证码识别

导语

自动化测试中,例如使用selenium测试web页面,在定位元素、识别元素、确认元素内容时会遇到,目标元素不可被获取、目标元素是图片无法获取到文本、目标元素动态变化无法定义预期值等,遇到以上种种便阻碍了测试脚本的进行,所以选择图像识别来实现以上无法完成的动作。
图像识别之验证码识别_第1张图片

原理及环境搭建

在原有的python环境外(作者使用python3.7),实现图像识别首先安装tesseract后端引擎,用于支撑OCR识别,主要涉及两个环境(截图、OCR识别)。

tesseract

由于Textshot的OCR识别需要调用tesseract后端引擎,所以,首先需要安装tesseract。
1.Windows版安装可以直接访问下载链接[https://sourceforge.net/projects/tesseract-ocr/]。
配置两个环境变量一个path一个TESSDATA_PREFIX。
(1)path下新增一个path为Tesseract-OCR所在路径,例如:F:\SocTest\dist\Tesseract-OCR。
(2)新建 TESSDATA_PREFIX 放入tessdata所在路径,例如F:\SocTest\dist\Tesseract-OCR\tessdata。
(3)配置完成需要重启电脑。
2.Mac下可以使用Homebrew进行安装(brew install tesseract)

截图工具安装

截图工具是我们经常会用到的一种工具,Python中有很多可以实现截图的库或者函数,例如,pyscreenshot或者PIL中的Image函数,只需要把鼠标框选的起点和终点坐标传给grab方法就可以实现截图功能。
可以通过pip install 工具例如:pip install pyscreenshot来进行安装。

图像识别验证码Demo实现

图像识别函数

创建一个SocImage.py文件,引入os、PIL-Image、pytesseract、time,函数需要传入浏览器browser、element为主要参数,以传入元素获取整个验证码所在的左上角x、y坐标轴,再通过获取元素的宽和高计算得出另外三个点的坐标轴,实现截图并命名为screen,图片准备完毕后,调用pytesseract的image_to_string函数将图片转换为字符串,最终将识别出的字符串返回给测试脚本函数,代码样例如下:
图像识别之验证码识别_第2张图片

测试脚本函数

图像识别之验证码识别_第3张图片

你可能感兴趣的:(python,开发语言,selenium,图像处理)