美文网首页
appium+aircv解决滑块图片验证码问题

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

作者: 胡萝卜有刺儿 | 来源:发表于2018-07-06 21:31 被阅读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)
    

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

    相关文章

      网友评论

          本文标题:appium+aircv解决滑块图片验证码问题

          本文链接:https://www.haomeiwen.com/subject/fsabuftx.html