首页 > 编程知识 正文

rpa如何实现,RPA技术原理

时间:2023-05-05 02:51:30 阅读:269330 作者:800

目录

1、RPA基本操作

2、RPA技术分析

RPA基本操作

Robtic Process Automation(简称RPA),即机器人流程自动化。上一篇《RPA浅谈》中聊到,RPA的优点在于模拟人工、跨平台特性。那么既然是模拟人工,相关的基本操作不外乎以下几类(此处以Web操作为例):

1、访问指定的网址;

2、找到界面中的元素,即元素拾取

3、给指定元素赋值,如输入用户密码

4、获取元素信息,如弹框title、内容

5、控件行为操作,如点击按钮、获取焦点、界面滚动等

6、其他附带操作,如列表解析、邮件发送、异常兼容等这些属于代码层面的能力

RPA技术分析

总结以上的操作,RPA主要的技术点个人认为就两点:元素的拾取与控件的操作

元素拾取

很直观的想法,人对界面元素的定位完全通过视觉发现,大脑分析完成,例如一个登录界面,立马知道哪个是登录按钮,哪里填用户密码。但是机器要自主完成这看是简单的操作就不是那么容易了,机器自主完成的前提就是需要定位到目标元素,也就是所谓的元素拾取。后续的操作都必须建立在定位到元素的基础上,所以元素的拾取技术是各大RPA厂商相互竞争的核心技术之一,如果在这方面有专利也就意味着在RPA这个游戏里有不可替代的优势。下面基于自己的理解及相关实践经验来分析元素识别的相关技术

1、侵入式元素定位

主流的前端开发框架jQuery、Angular、Vue等都封装了获取元素句柄的方法,比如jQuery提供的 $("#targetId")便可获得id="targetId"的元素的句柄,有了元素句柄自然就能为所欲为。关键是如何获得这种权限,通常针对指定的目标对象(Web网站),通过一些特殊的方式在指定界面中注入一段js代码,不仅能定位元素还能调用js方法。由于这种方法过于粗暴,故称之为侵入式方式(当然,更有甚者直接用WebView劫持整个目标网站,这里不展开)。

通过上面的描述可以发现,这种侵入式的方式需要针对特定的网址做对应的操作,太过繁琐,不具有普遍性,而RPA是一种通用的技术。所以这种技术RPA并不采纳(不排除部分厂商在后续恶劣竞争中开这个后门)。

2、DOM结构分析

在HTML5一统天下的时代,规范前端布局,方便了对界面的分析。比如以下是百度首页的DOM Tree的一部分

从图中可以清晰的看到整个百度首页的H5布局结构,任何一个元素节点都有一条唯一的路径可触达。比如 "百度一下" 这个按钮,对应的路径为:DIV:nth-of-type(1) >... > INPUT:nth-of-type(1)  (部分路径,贴全无意义,重在思路)

或是通过该元素的属性,id class  type等来唯一定位特定的元素。

前面提到的各RPA厂商的专利就体现在这些元素路径的设计和实现上,在此之下隐藏了一层技术实现。前一篇《RPA浅谈》中谈到的UI Automation是微软提供的支持自动化测试的技术,所以在IE浏览器的元素拾取上便有对应的“UIA拾取”,另外针对不同的浏览器如Chrome、FireFox等都有对应的拾取技术。

元素操作

1、侵入式元素操作

这块基本与侵入式元素定位类似,注入JS代码就相当于开挂了,基本的界面操作都不在话下。

2、WIN API

技术流程图如下:

这里以元素赋值为例来介绍这个过程

1、前端发起设置属性的指令,比如封装了一个叫setText(msg,path,other)的方法

msg:需要赋值内容

path:定位元素相关的信息,即上面提到的元素拾取的位置路径等。

other:其他辅助的参数

2、通过自定义的解析方法处理setText中的参数,使其满足USR32.DLL中对应API的参数要求,通常赋值调用的是

int SendMessage(IntPtr hwnd, uint wMsg, IntPtr wParam, string lParam);

hWnd:其窗口程序将接收消息的窗口的句柄,用于标识指定的元素,setText()中的path最终需转换成对应的hwnd
wMsg:指定被发送的消息
wParam:指定附加的消息指定信息
lParam:指定附加的消息指定信息

3、剩下就是WIN API内部的实现了,深入到WIN底层就不去纠结了

总结

本文主要介绍RPA相关技术的实现思路,更深层次的内容将参看RPA Plus大神们的文章:https://www.rpaplus.com/2020/3155/

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。