关于ui自动化测试 图片验证码 识别的 几点心得看法

时间:2024-02-19 07:12:00

我们在 做UI自动化测试的时候,大家遇到的第一个难题 想必大家都 清楚吧,当我们看到登录的主页 显示的 各种五花八门的 图片验证码的时候,大家都感觉到比较棘手!

小编先罗列下 常见的验证码 方式:

 

1、H5页面中 文字 潜入到图片中的 验证码方式

解决思路:

1)第一步提取出 要 匹配的 文字

2)第二步 要识别 图片中的文字 与 在整个页面布局中的 位置,只有知道了位置,才好去做比较 并做点击事件操作

难点在找 整个页面布局中的位置,位置都是动态变化的,图片也是动态变化,利用图片识别 存在一个识别率的问题,需要一个强大的算法去识别,如果调用第三方的api还会存在次数限制。

这里可以尝试用百度的图片识别api 方法调用试试

 根据实验后的结果发现:1、百度api对于图片的识别通过率不高,4个文字 每次只能识别2-3个,所以调第三方接口的方式 不可取。

需要一个强大的算法来支持 图片识别与位置定位,写成一个 方法,可以通过循环调用来提升识别率,直到4个全部匹配成功则停止调用。在调用前还是需要保存一张原图比较好。

 

 

2、图片与文字含义匹配 点击方式的验证码,这种方式就比较高级了,自动识别难度极大;12306的抢票,各大抢票平台应该是得到官方授权后 调接口来抢票的吧,应该不会傻傻的通过UI自动化测试的方式来实现吧。

这种方式直接通过接口登录,获得cookie授权 直接绕过 验证码则可。

 

 

3、拖动到指定位置的 拼图方式的 验证码

 

 解决思路:

1、找到 需要移动的图片,并且计算出其轮廓(通过坐标位移来计算)

2、找到 空缺出的图片位置 并计算其 轮廓

3、把移动图片的图片轮廓 与  空缺处的轮廓 进行比较,匹配则 通过滑动到相应位置

 

 

 

 

4、短信验证码

 

 短信验证码在操作后,必须会向后台服务器 发送HTTP请求,调接口,我们只能通过登录后台系统中 去短信列表里面去获取,在内部测试的角度来看,我们直接去数据库中的  短信列表中找到 验证码这个字段 ,从数据库中提取出来就可以了!

这个应该是最简单的方式,直接调数据库中拿。