自动化过程中验证码识别方法--纯技术

Posted 软件测试部落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化过程中验证码识别方法--纯技术相关的知识,希望对你有一定的参考价值。

前段时间,看到有测试的朋友在群里询问关于验证码的识别方法,由于本人最近刚好在进行一个自动化项目,该系统的登录,刚好使用了令我异常头疼的验证码。所以在历经千辛万苦之后,我搞定了验证码的识别,当然我也是在我们测试经理的领导下才完成这个艰巨的任务。现在我把我在实现自动化识别验证码方法记录下来,希望可以帮到对此有需要的测试同行们,现在没需要的也可以看看,以后说不定就用的上了
我目前使用两种方式去识别验证码,下面简要介绍一下。
先POLO出一个登录界面,大家有个较好的参照物哈!
一、OCRKing识别
OCRking估计很多人都听说过,是一款在线识别的工具,不了解的童鞋可以自己在网上百度一下关于OCRKing的资料,据说OCRKing是收费的。当然在此处我推荐给大家,肯定是不会让大家花money的,我用的是热心网友提供的免费服务的,这个还可以,就是有一点不太好,免费的那个服务器不是很稳定,不过有的用就不错了,就不要求那么多了。
大家可以通过这个网址去熟悉一下OCRking:http://lab.ocrking.com/。热热身,不然下面看代码是会有些不知所云。
先把使用OCRKing使用需要的.dll文件贴给大家,需要的可以下载:链接: 密码: 4md8
利用OCRKing的识别机制是:将是验证码保存到本地,然后使用OCRKing去识别验证码。将识别后的验证码填写到验证码输入框即可。
准备工作做好了,原理机制也了解清楚了,那下面我们就开工了。PS:我是根据我使用的工具进行说明的,但是个人觉得,目前很多自动化工具之间还是有很多共通的,具体的如何实现移花接木,就看各位的造化了。
1、首先,导入或者映OCRking的dll文件
自动化过程中验证码识别方法--纯技术2、接下来,编写OCRKing使用的方法:PS:我也就直接将代码贴出来,不赘述了,你若是问我为什么这么写,我只能告诉你:呵呵,这么写能达到效果。

自动化过程中验证码识别方法--纯技术




3、在需要的时候引用OCRKing识别验证码

自动化过程中验证码识别方法--纯技术




当然,这个识别不是一次就能成功的,当识别结果不正确的时候,系统肯定是不能登录成功的,这个时候,你肯定有个参照标准去判断是否登录成功,不成功的话,就循环登录呗,直到登录成功。
二、次世代验证码识别+ (a9t9) Free OCR for Windows Desktop
同样,先给出使用过程中所需要使用的安装包等:链接:  密码: n9ss
这是两个工具的组合使用,其中(a9t9) Free OCR for Windows Desktop需要安装。次世代验证码识别是免安装的,直接利用AntiVCode.exe启动即可使用。因AntiVCode直接读取结果超过100次是收费的,所以用AntiVCode识别后,用(a9t9) Free OCR for Windows Desktop识别,可以避免收费问题,嘿嘿,心机girl现身了。
这种方法的使用原理是:保存验证码图片到指定位置,打开AntiVCode识别刚刚保存的验证码图片,将识别结果保存为图片,通过(a9t9) Free OCR for Windows Desktop再次识别,将图片转化为文字。复制即可得到结果。
先说说AntiVCode吧,即次世代验证码识别工具,这个比较麻烦,主要是在于字模的设置。
1、创建项目,以及配置各项参数设置

自动化过程中验证码识别方法--纯技术




2、点击下载图像,即会从验证码图片保存路径中取验证码图片

自动化过程中验证码识别方法--纯技术


呀呀呀。识别的不准确,怎么办?添加字模呗
3、点击字模管理,进入字模页面(我就直接贴图说明了,不是很了解的童鞋自己都尝试摸索几次,就会熟悉的)

自动化过程中验证码识别方法--纯技术




自动化过程中验证码识别方法--纯技术




自动化过程中验证码识别方法--纯技术




字模选择的越好,识别的效果越准确,这个大家可以自己慢慢调整字模来提高识别率。我现在的脚本里面用的这个识别率达到90%以上。
4、将上述的识别结果保存为图片到具体位置,通过(a9t9) Free OCR for Windows Desktop打开识别结果的图片,读取内容
自动化过程中验证码识别方法--纯技术LOOK,上图就是识别后的结果,复制后粘贴到验证码输入框内即可。
下面给瞄瞄代码是怎么处理的(其实这个上面的那个也差不了太多),一言不合我就又上图了。

自动化过程中验证码识别方法--纯技术




自动化过程中验证码识别方法--纯技术




整个识别验证码的过程就完成了。
上图中还有两个地方用黄色背景色标注出来,这个是删除保存的验证码图片和识别结果的图片,尽管硬盘空间够大,但是还是要养成好的习惯,进行垃圾回收,给它删除掉,这样操作也能提高识别率,避免图片太多,混乱了。下面,将删除文件的方法代码也贴出来吧。

自动化过程中验证码识别方法--纯技术




好了,两种方法都介绍完毕了,简单总结下:个人觉得,像webdriver这中只对B/S架构的对象比较有较强识别能力的工具,使用OCRKing的识别方法比较适合,而第二种,因为涉及到两个客户端的使用(Free OCR for Windows Desktop和次世代验证码识别系统),这个要求使用的工具对C/S架构的对象的识别能力要强,比较适用于QTP和Ranorex等自动化工具。
最后,写在末尾的:第一次写这种技术类型的帖,有点不知从哪下手的感觉,童鞋们就凑合着看吧,以后若是有机会再发技术帖,肯定给捯饬的好看一点。自动化过程中验证码识别方法--纯技术
又跑进来编辑了,忘了告诉各位童鞋们,使用OCRKing的话,是需要获取APIKey的。
获取APIKEY的方法:


查看selenium系列课程,回复:selenium




.....



以上是关于自动化过程中验证码识别方法--纯技术的主要内容,如果未能解决你的问题,请参考以下文章

验证码识别技术

干货丨RPA验证码识别技巧

干货丨使用RPA进行验证码识别

按键精灵脚本中如何自动识别并输入验证码

测码奔腾·鼎新基于tesseract识别验证码实践

一种基于Tesseract识别验证码实践