什么是RPA?RPA(Robotic Process Automation,机器人流程自动化)是通过特定的、可模仿人类在计算机界面上进行操作的技术,它能够按规定主动执行相应的流程工作,代替或辅助人类实现相干的计算机操作,从而节约人力老本,进步生产效率。
从RPA的定义就能够看出,对计算机界面的操控是RPA的外围之一。要实现对计算机界面的操控,就必须用到RPA界面元素定位和操控技术。
元素定位与操控技术
界面元素是指用于构建零碎或应用程序的所有图形用户界面局部,例如窗口、输入框、按钮等。通过显示器、键盘、鼠标等计算机外部设备,人可能实现在指定输入框输出文本、点击指定按钮等操作,和操作系统以及业务零碎进行交互。同样的,RPA要代替人实现这些操作,就须要可能定位和操控这些界面元素。
界面元素定位与操控办法有很多,次要区别在于是否应用GUI(Graphical User Interface, 图形用户接口)自动化技术。非GUI自动化技术有:相对坐标定位、图像匹配定位、基于音讯操作、模仿键鼠操作等。GUI自动化技术有:Win32、MSAA、UIA、JAB、SAP、Citrix Virtual Channel、RDP Virtual Channel、Selenium、Chrome Extension等。通常来说,GUI自动化技术能获取到的界面元素的信息更多,反对的操作也更多,但同时局限性也更大,一种GUI自动化技术往往只反对几个界面元素框架,理论应用起来也会更艰难。
上面列举几种罕用的自动化技术并给出优缺点剖析。
01 相对坐标定位
相对坐标,是指屏幕中固定的坐标地位,当界面元素总是处于屏幕中固定坐标地位时,就能够应用相对坐标来进行定位。这个办法非常简单不便,在特定场景下十分好用。然而个别要求屏幕分辨率和利用窗口大小固定,而且无奈保障定位到的界面元素是否正确。
02 图像匹配定位
图像匹配,在待匹配图像中寻找与指标图像相似性高的单个或多个指标,并获取指标的坐标地位。图像匹配能够和相对坐标定位相结合,先应用相对坐标定位,再用图像匹配做校验;也能够先划定屏幕中的某个区域,在此区域内进行图像匹配,以达到进步准确率、减速匹配过程的目标。
图像匹配的办法十分多,模板匹配应用空间二维滑动模板进行匹配,将指标图像在待匹配图像中滑动;特色匹配提取图像的特色,再生成特征描述子,最初依据形容子的类似水平对两幅图像的特色之间进行匹配;深度学习也可用于图像匹配之中,例如,应用OCR技术能够定位到蕴含指定文本的图像。
03 基于音讯操作
这里的音讯指的是操作系统的音讯。Windows 是一个音讯驱动的零碎,Windows的音讯提供了应用程序之间、应用程序与Windows 零碎之间进行通信的伎俩。通过对应用程序窗口发送特定的音讯,能够实现对指定界面元素的点击输出等操作。
图1 Windows音讯机制
04 模仿键鼠操作
模仿键鼠可分为音讯模仿、API模仿、驱动模仿三种。音讯模仿基于windows的音讯机制,向指标窗口发送键鼠音讯。API模仿就是用Windows提供的API实现模仿输出。驱动模仿就是通过驱动程序,在零碎内核外面操作I/O端口,给连贯键盘的集成电路发送指令,让它产生一个按下按键的信息,这样你的模仿输出对于所有程序来说就是从一个实在的设施收回的。
05 Win32 API
Win32 API是微软第一代应用程序可拜访API。Win32 API呈现在.NET之前,是底层的Windows API。它反对MFC、VB6、VCL、简略的WinForms等窗体。
Win32自动化技术基于HWND(窗口句柄),个别须要通过 FindWindow、 EnumWindows 来查找指标窗口的句柄,而后再调用其它 API,例如 GetWindowText、GetWindowRect等来获取窗口属性,以此来定位指标元素。定位到指标元素之后,能够通过Win32 API实现对指标元素的操控。例如应用SetWindowText来设置显示的文字,应用SetActiveWindow来激活窗口等。
长处:
- 对规范Windows控件反对良好
毛病:
- 过于底层,调用简单。例如:Win32 API查问窗体须要逐层获取窗体句柄进行遍历查找
- 技术落后,用处不广。例如:Win32 API对新UI框架以及自定义控件的反对很差。
06 MSAA
MSAA(Microsoft Active Accessibility)是微软第二代应用程序可拜访API。MSAA旨在帮忙辅助技术产品与应用程序(或操作系统)的规范和自定义用户界面元素进行交互。它反对WFC、VB6、VCL、WinForms、WPF等窗体。
MSAA 次要基于 COM 技术。提供信息的应用程序被称为 Server;获取信息的应用程序被称为Client。首先Client调用AccessibleObjectFromWindow传入Server窗口的HWND。
而后AccessibleObjectFromWindow函数向Server发送WM_GETOBJECT音讯。Server创立并实现了IAccessible,之后通过LresultFromObject 把IAccessible 返回给Client。最初Client调用IAccessible定位和操作Server中的界面元素。
长处:
- 相较Win32 API更简略易用。使用者只须要和 IAccessible 进行交互,也不须要间接应用windows音讯来操作指标元素。
- 相较Win32 API反对了局部自定义控件。前提是开发人员在实现自定义控件的同时实现了 IAccessible 的接口。
毛病:
- 性能不全。MSAA技术的初衷是为了不便残疾人应用Windows 程序,对自动化来说还是不够,仅反对对界面元素的一些基本操作。
07 UIA
UIA(Microsoft Active Accessibility)是用于代替MSAA的应用程序可拜访技术。和MSAA不同,UIA技术的初衷是提供UI的可拜访性。它反对MFC、WinForms、WPF、Store apps、Qt等窗体。
UIA定义了全新的、针对UI自动化的接口和模式。别离是反对对界面元素进行遍历和条件化查问的TreeWalker和FindAll。定义了读写UI元素属性的UIA Property, 包含Name、 ID、Type、ClassName、Location、 Visibility等等。定义了UI元素行为的UIA Pattern, 比方Select、Expand、Resize、 Check、Value等等。还引入了UIA Event接口,能够让测试程序在某些事件产生后失去告诉,比方新窗口关上事件等。
图2 UIA架构图
长处:
- 反对的UI框架更丰盛。例如WPF和Silverlight中的子窗口和控件并不是传统的HWND,所以Win32 API和MSAA无能为力,而UIA能够间接反对这两种程序。
- 兼容传统的Win32和MSAA模式。后面提到过,UIA技术的外部实现能够多样化。针对传统程序,UIA能够在外部实现中借用MSAA的接口和间接调用Win32 API。
- 高度形象,易于应用。例如执行点击按钮操作, UIA 对立归类于Invoke, 无论是Win32、 WPF还是Silverlight按钮,都能够通过Invoke实现点击,不必关怀具体实现形式是模仿键鼠还是调用Windows API。
毛病:
- 编码过程简单。对于一个UI窗口,外面可能有几十个子控件或者子窗口。在编写测试代码的时候, 如果对这些子元素的获取,操作不能简化, 势必导致代码冗繁,难以保护。
08 JAB
JAB(Java Access Bridge)是一项在Microsoft Windows动态链接库(DLL)中公开Java Accessibility API的技术,使实现Java Accessibility API的 Java应用程序对Windows零碎上的辅助技术可见。
要应用JAB技术,须要在启动Java程序前配置好所需的JAB环境。Client须要当时加载WindowsAccessBridge.dll获取Server提供的接口,通过FindWindow获取窗口句柄,用IsJavaWindow来判断筛选出Java程序的窗口。拿到窗口后,能够依据窗口句柄获取虚拟机编号vmID 和根节点ac。之后就能够应用vmID和ac,通过之前Server提供的接口,来获取子节点界面元素的vmID和ac、获取界面元素的信息、以及调用界面元素反对的点击输出等办法。
JAB技术的初衷也是为了不便残疾人应用,因而对自动化技术的反对并不好。
图3 JAB架构图
09 SAP
SAP 提供了 Scripting Engine 来进行用户界面自动化。SAP Scripting Engine 是一套基于 COM 的接口,提供了 SAP 全面的脚本化反对。
10 Citrix Virtual Channel
Citrix 提供了 Virtual Channel 的机制来满足 Client 和 Server 之间的通信需要。利用 Virtual Channel,咱们能够向 Citrix 虚构桌面发送任意指令、获取业务所需信息。Citrix 是基于 ICA (Independent Computing Architecture) 协定来实现的。
图4 Citrix Virtual Channel
11 RDP Virtual Channel
RDP (Remote Desktop Protocol) 是微软开发的一套远程桌面协定。RDP 也提供了 Virtual Channel 机制来满足 Client 和 Server 之间的通信需要。
图5 RDP Virtual Channel
12 Selenium
Selenium是一个开源的Web自动化测试工具,它反对所有支流的浏览器,能够实现关上浏览器,获取网页界面元素数据,保留网页截屏等操作。
图6 Selenium执行过程
13 Chrome ExtensionChrome
浏览器插件是容许开发者自定义用户应用体验的一种技术。能够利用 Web 技术,如 HTML、CSS、JavaScript 来自定义浏览体验。
智能定位与操控技术
从之前的介绍能够看到,零碎和应用程序的界面元素框架品种繁多,不同应用程序须要的自动化技术不尽相同,例如Chrome浏览器须要应用Web自动化技术、Oracle ERP须要应用Java自动化技术、SAP须要应用SAP自动化技术;同一种应用程序在不同操作系统上,自动化的实现形式也有所差异,例如大多数RPA产品都依赖Windows的.Net框架来操控应用程序,在Linux等操作系统上齐全无奈应用。
以Chrome浏览器为例,少数RPA产品会抉择应用开源的Selenium来实现对Chrome浏览器的自动化操控。Selenium是一个驰名的Web利用测试工具,它提供了丰盛的API接口,能够十分不便的被Python、Java等语言调用,同时也存在驱动版本必须和浏览器版本严格对应,以及容易被网页检测到等毛病。Selenium无奈用于操控其余应用程序,因而须要独自为浏览器设计一整套自动化管制模块。较为成熟的RPA产品通常会抉择自研浏览器插件,用插件实现雷同的性能。自研浏览器插件能够将浏览器和其余应用程序的自动化接口进行对立,然而遗憾的是,很多RPA产品并没有这么做。将浏览器作为特例或者会不便相熟网页测试技术的开发者疾速上手,但对于不相熟相干技术的开发者,无疑减少了微小的学习老本。
因为上述起因,RPA流程开发须要思考流程共波及几种自动化技术,会在几种操作系统上运行。RPA开发人员不仅须要理解业务零碎的每一部分应用了何种自动化技术,在开发中选用正确的模块,还须要理解流程会在哪些操作系统上运行,为每种操作系统开发一个独自的流程。随着RPA波及业务零碎的范畴扩充,以及国产操作系统的遍及,流程开发成本将大幅提高。
RPA界面元素智能自适应定位与操控技术将这些自动化技术进行了对立,对不同操作系统做了兼容。在RPA流程开发过程中不须要辨别自动化技术,同一流程能够在不同操作系统中间接运行,能大幅升高开发成本。
智能定位与操控的技术实现
RPA界面元素智能自适应定位与操控技术交融了以后支流的自动化技术,通过高度形象实现不同自动化技术的对立调用,通过基于规定的自动化技术切换器实现不同自动化技术的智能切换。
图7 智能元素捕捉器架构图
以捕捉和操作应用JAB自动化技术的Java应用程序为例。使用者先用界面元素分析器捕捉指标元素,此时依据鼠标点击的地位,界面元素分析器能够取得指标元素所在的窗口以及窗口所属的应用程序并拿到窗口和应用程序的信息。依据这些信息,自动化技术切换器将依据规定抉择最合适的自动化技术。在这个例子中会智能切换到JAB自动化技术。接下来,界面元素分析器会调用“获取指定地位下的指标元素”这个办法获取指标元素,该办法的底层实现基于JAB自动化技术,该指标元素所具备的属性和反对的办法也都是通过JAB自动化技术失去的。这些属性和办法也是形象的,通过JAB自动化技术获取到的属性role会被映射为规范的control,通过JAB自动化技术获取到的办法Click会被映射为规范的Invoke。使用者想要实现点击指标元素,只须要依照对立的规定调用Invoke办法即可,不须要关怀该办法底层是如何实现的。
定位指标元素还存在一个很常见的问题,指标元素的属性和在UI中的地位偶然会发生变化。例如有些窗口题目会带版本号,一旦更新应用程序就会发生变化。当这些发生变化时,就有可能定位失败。为了更好地定位元素,用户界面被形象为了一个文档对象模型(Document Object Model),反对应用CSS语法和XPath语法的元素选择器定位指标元素,元素选择器是一段文本,蕴含了元素的属性和层级关系,反对含糊匹配。
图8 DOM 构造
文档对象模型罕用于操纵HTML和XML数据,它将整个文档形象为逻辑上的对象,而后定义了拜访和操作这些文档的办法。文档对象模型独立于任何零碎平台和编程语言,应用文档对象模型提供的办法,能够构建文档、导航其构造以及增加、批改或删除元素和内容。用户界面也能够形象成一个文档对象模型,造成一个树结构,每个界面元素都是用户界面树的一个节点,每个节点都是一个形象的元素对象,有雷同的属性和办法。在界面元素分析器和应用程序的通信过程中,跨零碎兼容的自动化技术切换器会依据获取到的应用程序信息依照规定主动切换,对接相应的自动化技术接口,用获取到的界面元素信息来构建形象元素对象以及文档对象模型。
在元素分析器界面,能够看到用户界面树的整体构造和每个界面元素的各种属性,通过定位语句,能够定位到满足定位语句的指标元素。定位语句采纳自研语法解析技术,同时反对CSS语法和XPath语法,反对按属性精准匹配、前缀匹配、后缀匹配和含糊匹配,反对形容元素间的后辈关系、父子关系和兄弟关系,自由度极高,适应用户界面变动能力强。捕捉元素后会主动生成适宜的元素选择器,使用者也能够在此基础上手动批改以进步定位的灵活性和准确度。
图9 Windows元素捕捉器
RPA界面元素智能自适应定位与操控技术同样反对国产操作系统,国产操作系统大多是基于Linux革新的,借助Qt-at-spi技术,能够通过Linux的调试接口获取到图形界面上应用程序的界面元素。针对不同的国产操作系统,具体实现细节有所区别。通过封装,实现了各国产操作系统和Windows操作系统接口的对立。
图10 UOS元素捕捉
目前RPA界面元素智能自适应定位与操控技术已兼容WIN32、UIA、MSAA、JAVA、SAP、Chrome、IE、Firefox、X11等多种自动化技术。借助自动化技术智能切换计划,应用过程中选择器会智能切换自动化技术。切换计划同时反对自定义配置,能够应答非凡场景的需要。达观全能界面元素选择器的可拓展性很强,新的自动化技术能够通过公共接口无缝接入,革新和降级都非常不便,不会影响现有的RPA流程。
RPA界面元素智能自适应定位与操控技术同时兼容多种操作系统,包含Windows7 SP1以上的支流Windows操作系统、MAC零碎、国产麒麟、统信、中科方德零碎等。RPA流程能够轻松在这些零碎间迁徙,雷同应用程序的同一界面元素定位语句完全相同,雷同操作的底层实现会依据以后运行的零碎主动切换。相比之下,其余RPA产品多是基于Windows的Net框架实现的界面元素定位和操控,无奈迁徙到其余操作系统中运行的。
将来瞻望
01 兼容更多自动化技术
目前,还有一些自动化技术没做到兼容,例如Citrix虚拟化利用、RDP远程桌面等。这些场景下依然须要开发者采纳相应的技术,做针对性开发。后续RPA界面元素智能自适应定位与操控技术将退出对更多自动化技术的反对,进一步优化RPA开发者的体验。
02 兼容更多操作系统
当下,国产操作系统倒退迅速,麒麟、统信、中科方德等国产操作系统的市场越来越大,后续在这些国产操作系统上开发和运行RPA流程的需要也会越来越多。除此之外,挪动设施上也有一些运行RPA流程的需要。兼容这些操作系统也同样在开发计划之内。
03 开发基于图像的自动化技术
尽管大多数应用程序都反对自动化技术,但仍有多数利用不足相干反对。达观全能界面元素定位和操控技术将依靠公司的自研AI能力,开发图像自动化技术来解决这一问题。该技术会将用户界面依照不同层级进行智能宰割,提取出不同层级的图像作为元素对象,通过图像技术结构用户界面树并提取出元素对象的属性信息。这一技术将彻底解决应用程序不反对自动化技术的问题,真正做到通用且无侵入的定位和操控界面元素。
作者简介
金克:达观数据技术副总裁,负责达观数据RPA产品团队组建和研发。在退出达观之前,联结创建“飞语云通信”并负责CTO,在系统工程开发、大规模并发网络、Go语言程序设计等方面有丰盛的教训,先后在格尔软件,爱克发医疗,隆重翻新院,飞语等公司就任,有十余年的软件开发教训,率领团队参加了信息安全,医疗影像,云存储,领取和计费零碎、云通信平台等的研发工作。2021年上海“张江工匠”获得者。