共计 7334 个字符,预计需要花费 19 分钟才能阅读完成。
什么是 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 年上海“张江工匠”获得者。