uipath实现滑动验证码登录

  • 现实需求

在进行RPA流程设计过程中,遇到登录系统需要滑动验证的情况,如图所示:

uipath实现滑动验证码登录_第1张图片

 

此时需要在RPA流程设计中,借助现有的活动完成模拟人工操作,完成验证登录操作。

  • 设计思路

这个功能流程的设计思路大体如下:

1、首先是利用uipath自带的截取屏幕图片活动,将需要验证的图片截取下来;

2、调用第三方平台的接口识别图片并返回缺口的x坐标;

3、利用uipath自带的“单击”活动,模拟拖动滑块,实现验证登录的操作。

uipath实现滑动验证码登录_第2张图片

 

  • 实现过程
  1. 在uipath中使用截取屏幕截图,捕捉需要进行验证的验证码图片,自定义存储文件的路径,我这里是定义了一个变量img_path来存放文件路径。

uipath实现滑动验证码登录_第3张图片

2.添加“pyhton作用域”活动,在作用域中依次添加“加载python脚本”、“调用python方法”、“获取python对象”三个活动。

uipath实现滑动验证码登录_第4张图片

 

uipath实现滑动验证码登录_第5张图片

 

以上活动的前提是你要在项目依赖项中先添加uipath.python.activities,不然在活动中你是找不到上面的这些活动的。

uipath实现滑动验证码登录_第6张图片

 

添加依赖项的方法:在设计界面上方点击管理程序包,在管理包界面中搜索输入python,选择对应的包安装即可。

uipath实现滑动验证码登录_第7张图片

uipath实现滑动验证码登录_第8张图片

 

当然,你要调用python的脚本代码,自然也是要先安装python解析器的,至于安装python解析器的步骤方法,这里就略过,请各位自行百度。

3.填写相应活动的参数变量,这里就只展示一些必填的参数内容。

Python作用域

版本:根据你本地安装的python解释器为准,我这里选择自动;

目标:x86或者x64,根据你实际的情况进行选择;

路径:就是python.exe的文件路径,我这里设置了变量python_path来存放。

uipath实现滑动验证码登录_第9张图片

 

加载python脚本

文件:也就是你python脚本文件的存放路径,我这里用py_path变量来存放;

结果:这里需要定义一个pyhton对象来存放输出的结果,定义为py_def。

uipath实现滑动验证码登录_第10张图片

 

调用python方法

名称:你需要调用的python脚本里面的方法名称,我这里定义变量def_name来存放;(这里面要注意,这个名称必须与你python脚本中的方法名称一样)

实例:就是第一步加载python脚本时,输出的python对象数据,也就是py_def;

结果:该活动最终输出的结果,类型也是一个python对象,我这里定义一个变量code_value_py来进行存放。

uipath实现滑动验证码登录_第11张图片

获取pyhton对象

TypeArgument:这里根据你实际返回的结果需要进行选择,我这里需要返回的是字符串(string);

Python对象:这里输入上一步调用python方法输出的结果,我这里为定义的变量code_value_py;

结果:最终输出的结果,可以自行定义,我这里定义变量code_value进行存放。

uipath实现滑动验证码登录_第12张图片

 

经过以上步骤,最后我们可以拿到一个验证码图片缺口的x坐标的值。可能有的朋友就有疑惑了,这个x坐标的值是怎么拿到的。别急,最后我会对python脚本展开来讲。

4.添加三个“单击”活动,用以模拟鼠标的操作来完成滑动验证码验证,三个单击活动的参数配置稍有不同,分别如下:

第一个单击活动

光标移动类型:CursorMotionType.Smooth

点击类型:选择,鼠标键默认左键,表示鼠标按下左键;

单击偏移量:模式选择PointOffset,但是不设置偏移量,表示从起点开始;

输入模式:选择硬件事件

uipath实现滑动验证码登录_第13张图片

第二个单击活动

光标移动类型:CursorMotionType.Smooth

点击类型:选择,鼠标键默认左键,表示鼠标按下左键;

单击偏移量:模式选择PointOffset,这里的偏移量应用前面python返回的x值,表示从滑动到的位置,我这里设置为CInt(code_value);

输入模式:选择硬件事件

这里可能还要设置活动完结后,延迟2~3秒。

uipath实现滑动验证码登录_第14张图片

第三个单击活动

光标移动类型:CursorMotionType.Smooth

点击类型:选择,鼠标键默认左键,表示鼠标放开左键;

单击偏移量:模式选择PointOffset,但是不需要设置偏移量;

输入模式:选择硬件事件

uipath实现滑动验证码登录_第15张图片 

至此,整一个RPA流程的设计需要的步骤就完成实现了。

  • Python脚本代码

参考的python脚本代码如下,这里调用的是云码平台提供的接口,https://zhuce.jfbym.com/demo/。这里还有一个图鉴的平台,上面的接口脚本也可以参考http://ttshitu.com/docs/python.html#pageTitle。

import json

import time

import requests

import base64



class YdmVerify(object):

    _custom_url = "http://api.jfbym.com/api/YmServer/customApi"

    _token = "your token"

    _headers = {

        'Content-Type': 'application/json'

    }



    def sin_slide_verify(self, image, verify_type="20110"):

        # 通用单图滑块(截图)  20110

        payload = {

            "image": base64.b64encode(image).decode(),

            "token": self._token,

            "type": verify_type

        }

       Resp=requests.post(self._custom_url,headers=self._headers,data=json.dumps(payload))

        #print(resp.text)

        print(resp.json()['data']['data'])

        return resp.json()['data']['data']



def base64_api():

    Y = YdmVerify()

    with open('your img_path', 'rb') as f:

        s = f.read()

    return Y.sin_slide_verify(image=s)



if __name__ == '__main__':

    #Y = YdmVerify()

    #with open('your img_path', 'rb') as f:

       # s = f.read()

   # Y.sin_slide_verify(image=s)

    result = base64_api()

    print(result)

你可能感兴趣的:(RPA,python,开发语言)