appium+aircv解决滑块图片验证码问题

2018-07-06  本文已影响409人  胡萝卜有刺儿

因为登录接了阿里聚安全的安全验证,有图片滑块验证,暂时通过处理图片解决了,待后续优化及试验实际操作情况。
先放一个解决效果图


verfy.gif

解决方案

通过opencv里边的aircv处理图片识别及获取到对应坐标,然后通过appium的swipe滑动解决。

依赖内容

brew install opencv3对应python3版本安装opencv3
到brew安装目录/usr/local/Cellar/ 找到opencv的cv2.so文件
pyenv的安装目录在~/.pyenv/versions/,找到py3的site-packages,在site-packages目录创建cv2
.so文件的符号链接
ln -s /usr/local/Cellar/opencv/3.4.2/lib/python3.7/site-packages/cv2.cpython-37m-darwin.so cv2.so
安装完成后
import cv2 检查是否安装成功
若出现ImportError: numpy.core.multiarray failed to import报错
pip3 install numpy解决
安装aircv pip install aircv

具体操作

首先将原图中目标内容分解出来


go03.png

渠道目标滑块及目标位置图标


logo.png
pos3.png

设计取目标图片最好越小越好(也待具体实践验证)。
通过aircv的find_template方法获取识别内容
find_template(im_source, im_search, threshold=0.5, rgb=False, bgremove=False)

    res = ac.find_template(imgSrc, imgTarPic)
    if res:
        position1 = res['result']
        print(position1)
    else:
        print("未识别到目标图片")

获取到正常结果
(239.5, 1350.0)
获取到logo的位置及目标位置后就可以通过swipe方法去操作了,有滑块验证码可能还做了更细节的功能验证滑动动作的轨迹、速率等步骤来判断是否为人为操作,后续滑动动作需依赖具体情况做进一步处理。

self.driver.swipe(x, y, xt, yt, 3000)

效果就是最开始的动图内容。
后续需实践验证识别成功率问题、不同机型、不同分辨率计算图片位置问题。

上一篇下一篇

猜你喜欢

热点阅读