我们在 做UI自动化测试的时候,大家遇到的第一个难题 想必大家都 清楚吧,当我们看到登录的主页 显示的 各种五花八门的 图片验证码的时候,大家都感觉到比较棘手!
小编先罗列下 常见的验证码 方式:
1、H5页面中 文字 潜入到图片中的 验证码方式
解决思路:
1)第一步提取出 要 匹配的 文字
2)第二步 要识别 图片中的文字 与 在整个页面布局中的 位置,只有知道了位置,才好去做比较 并做点击事件操作
难点在找 整个页面布局中的位置,位置都是动态变化的,图片也是动态变化,利用图片识别 存在一个识别率的问题,需要一个强大的算法去识别,如果调用第三方的api还会存在次数限制。
这里可以尝试用百度的图片识别api 方法调用试试
根据实验后的结果发现:1、百度api对于图片的识别通过率不高,4个文字 每次只能识别2-3个,所以调第三方接口的方式 不可取。
需要一个强大的算法来支持 图片识别与位置定位,写成一个 方法,可以通过循环调用来提升识别率,直到4个全部匹配成功则停止调用。在调用前还是需要保存一张原图比较好。
2、图片与文字含义匹配 点击方式的验证码,这种方式就比较高级了,自动识别难度极大;12306的抢票,各大抢票平台应该是得到官方授权后 调接口来抢票的吧,应该不会傻傻的通过UI自动化测试的方式来实现吧。
这种方式直接通过接口登录,获得cookie授权 直接绕过 验证码则可。
3、拖动到指定位置的 拼图方式的 验证码
解决思路:
1、找到 需要移动的图片,并且计算出其轮廓(通过坐标位移来计算)
2、找到 空缺出的图片位置 并计算其 轮廓
3、把移动图片的图片轮廓 与 空缺处的轮廓 进行比较,匹配则 通过滑动到相应位置
4、短信验证码
短信验证码在操作后,必须会向后台服务器 发送HTTP请求,调接口,我们只能通过登录后台系统中 去短信列表里面去获取,在内部测试的角度来看,我们直接去数据库中的 短信列表中找到 验证码这个字段 ,从数据库中提取出来就可以了!
这个应该是最简单的方式,直接调数据库中拿。