Time will tell.
最近看到很多反馈说,经常在Web自动化过程中,被登录的验证码给卡住,不知道该如何去通过验证码的验证。
一般情况下遇到验证码我们可能都可以找开发去帮忙解决,关闭验证码,或者给一个万能的验证码。
如果开发不提供帮助的话,我们自己有没有办法来处理这些验证码问题呢?
答案当然是有的,常见的验证码一般分为两类,一类是图文验证码,一类是滑动验证码。
关于图文识别的验证码,之前已经出了相关的识别解决方案,这里就不做介绍了,有兴趣的可以私信。
一、滑动验证思路
思路大体上来讲就是以下2个步骤:
1、获取滑块滑动的距离;
2、模拟拖动滑块,通过验证。
听起来是比较简单,但是获取滑块滑动的距离,大多数的小伙伴没有思路,不知道怎么去获取。
其实要获取下来也不难,关于这种滑动的验证码,滑块和缺口背景都是分别是一张独立的图片,可以把这两张图片下载下来借助于图像识别的技术,去识别缺口在背景图中的位置,然后减去滑块当前所在位置,就可以得出需要滑动的距离。
这个时候你可能会想,图像识别技术我不会啊。不会没有关系,后面会给到大家一个封装好的滑块识别模块。
只要你传入滑块和缺口背景图的元素节点就能计算出滑块的缺口位置。
二、案例
我们来看一个QQ空间登录的案例,这边用到了一个我自己封装的滑动距离识别的模块slideVerfication。案例实现步骤如下:
1、创建一个driver对象,访问qq登录页面;
2、输入账号密码;
3、点击登录;
4、模拟滑动验证。
实现代码
运行效果
关于滑动验证码的识别问题就解决了。
三、讲讲封装的slideVerfication这个模块的识别原理
其实关于这个模块图像识别,也是借助了第三方的图像处理模块来进行识别的。
python 中有很多现成的用来处理图片的库,这边我使用的是 opencv-python 来进行识别的。
slideVerfication 模块上面用到的2个方法的部分参考代码如下:
最后
以上关于滑动验证码识别就分享到这里了,希望能对看过本篇文章的你有所帮助。同时,如果你喜欢软件测试这个行业的话,可以加入我们175317069一起学习,这里有行业深潜多年的测试人技术分析讲解。也会有各项测试资料、面试题发放。期待你的加入!
祝愿你能成为一名优秀的软件测试工程师!
喜欢的话,欢迎【评论】、【点赞】、【关注】礼貌三连~
Time will tell.(时间会证明一切)