wordpress ajax登录插件,青岛的seo服务公司,一站式做网站哪家专业,天津业之峰装饰公司怎么样UI自动化测试时#xff0c;需要对验证码进行识别处理#xff0c;有很多方式#xff0c;每种方式都有自己的特点#xff0c;以下是一些常用处理方法#xff0c;仅供参考。 1 去掉验证码
从自动化的本质上来讲#xff0c;主要是提升测试效率等#xff0c;但是为了去研究验… UI自动化测试时需要对验证码进行识别处理有很多方式每种方式都有自己的特点以下是一些常用处理方法仅供参考。 1 去掉验证码
从自动化的本质上来讲主要是提升测试效率等但是为了去研究验证码以及提升验证码的识别效率是需要投入比较大的时间的去掉验证码无疑是最简单的方式而且对于开发而言这样做工作量也不是很大但是建议在测试环境使用生产环境禁用因为存在安全问题。
2 设置万能码
这个是笔者刚开始做自动化时首选的一个处理方法因为既测试到了验证码的功能而且也不用投入太大的精力去研究如何进行验证码识别另外对于开发来说内置一个万能验证码也是非常简单的事情对于写自动化脚本的人来说也是非常的方便效率也高但这个万能验证码仅限相关人员知道避免存在安全隐患。
3 保留一个资源
有点验证码实则就是图片资源其实就是在制定的文件夹资源库中随机抽取一张那么只需要将服务器上的所有图片删除仅保留一张即可说白了就相当于固定验证码。
4 光学字符识别
其实就是通过Python-tesseract模块来只能识别图片中的验证码Python-tesseract是光学字符识别Tesseract OCR的python封装类其能够读取大部分常规图片文件比如JPG、GIF、PNG、TIFF等这个笔者也尝试过因为现在的图片验证码越来越复杂其实有时候识别率并不高下边我们尝试着使用一下。
4.1 识别对象
我们收集了几个图片验证码来源于网络仅供参考从左到右依次是image01.jpg-image04.jpg:
现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号110685036【暗号csdn999】 4.2 pytesseract安装
直接使用命令安装即可
pip install Pillow 4.3 Pillow安装
直接使用命令
pip install Pillow 4.4 OCR安装
直接在下载即可OCR官网选择对应的版本下载即可 按照提示安装完成 配置环境变量将其根目录添加到path环境变量中
4.5 识别原理
基本思路是通过图片降噪、图片切割等输出图像文本图片降噪就是将图片中一些不需要的信息去除比如背景、干扰像素、干扰线等。如果验证码是彩色的背景其实就是把每个像素放在五维空间即X、Y、R、G、BX、Y是像素的二维平面坐标RGB代表像素所对应的颜色。
4.6 处理过程
4.6.1 转灰度处理
导入需要的包
from PIL import Image
打开需要分析的图像
image Image.open(./image01.jpg)
将彩色图像转化为灰度图像RGB转为HSI色彩空间采用L分量
# 彩色转灰度
img_01 image.convert(L)
img_01.show()
以上完整代码为使用image01.jpg
# 导入Image包
from PIL import Image# 打开图像
image Image.open(./image01.jpg)
# 彩色转灰度
img_01 image.convert(L)
img_01.show()
转灰度后图像如下
4.6.2 二值化处理
图像分割常用的方法就是二值化处理二值化处理就是二值化图像时将大于某个临界灰度值的像素灰度设置为灰度的极大值把小于这个值的像素灰度设为灰度的极小值取值范围一般为0-1二值化算法不同可分固定阈值和自适应阈值比如这个固定阈值如下使用image02.jpg
# 导入Image包
from PIL import Image# 打开图像
image Image.open(./image02.jpg)
# 二值化处理
img_02 image.point(lambda x:0 if x143 else 255)
img_02.show()
二值化后的效果 我们结合前两种方法把image03.jpg先灰度再二值化处理后输出对应的文字
# 导入Image包
from PIL import Image
from pytesseract import pytesseract# 打开图像
image Image.open(./image03.jpg)# 灰度处理
img_new image.convert(L)
# 二值化处理
img_03 img_new.point(lambda x:0 if x143 else 255)
img_03.show()
out_img pytesseract.image_to_string(img_03)
print(out_img)
image03.jpg原图和处理后效果 结果输出
4.6.3 图像增强
为了排除更多的干扰我们可以使用将图片增强显示或者将图片转成黑白我们在以上代码继续添加
from PIL import ImageEnhanceimg_enh ImageEnhance.Contrast(img_03)
img_enh01 img_enh.enhance(4)
img_enh01 .show()out_img pytesseract.image_to_string(img_enh01)4.6.4 完整代码
我们使用image04.jpg输出完整代码
# 导入Image包
from PIL import Image
from pytesseract import pytesseract
from PIL import ImageEnhance# 打开图像
image Image.open(./image04.jpg)# 灰度处理
img_new image.convert(L)# 二值化处理
img_04 img_new.point(lambda x:0 if x143 else 255)# 图像增强
img_enh ImageEnhance.Contrast(img_04)
img_enh01 img_enh.enhance(4)# 处理后图片
img_enh01.show()# 提取图片文字
out_img pytesseract.image_to_string(img_enh01)
print(out_img)
处理前后的效果
5 打码平台
另外我们可以通过打码平台来实现图片文字提取比如超人、图鉴、斐斐等等比如图鉴平台可以参考它的开发文档
6 记录cookie
通过添加登录成功时所携带的cookie来跳过登录在selenium中使用add_cookie()方法将用户名和密码等登录信息写入浏览器的cookie中再次登录时直接读取浏览器cookie即可。此处代码省略后续添加。
END今天的分享就到此结束了点赞关注不迷路~