RPA场景下HTMLayout应用程序的元素定位方法及系统转让专利

申请号 : CN202311407694.6

文献号 : CN117130717B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘安成

申请人 : 杭州实在智能科技有限公司

摘要 :

本发明属于计算机技术领域,具体涉及RPA场景下HTMLayout应用程序的元素定位方法及系统。方法包括:S1,以用户所要操作的软件界面对象作为输入,并判断当前软件界面的窗口类名是否为HTMLayout窗体,若为HTMLayout窗体,则获取HTMLayout软件的进程信息,并注入元素解析模块;S2,对RPA元素进行拾取,获得所述RPA元素的种类信息、属性信息以及支持的操作动作信息;S3,将获得的RPA元素的种类信息、属性信息以及支持的操作动作信息通过通信模块展示在组件展示界面;S4,用户在组件展示界面确认拾取到的RPA元素为要操作的RPA元素后,确认完成(56)对比文件Arild Samuelsen Tømmervåg.Leveragingthe competition: Robotic ProcessAutomation (RPA) enabling competitiveSmall and Medium sized Auditing Firms .《2022 IEEE/SICE International Symposiumon System Integration (SII)》.2022,全文.刘长勇.一种基于XML的用户界面实现方法.福建电脑.2007,(09),全文.

权利要求 :

1.RPA场景下HTMLayout应用程序的元素定位方法,其特征在于,包括如下步骤;

S1,以用户所要操作的软件界面对象作为输入,并判断当前软件界面的窗口类名是否为HTMLayout窗体,如果为HTMLayout窗体,则获取HTMLayout软件的进程信息,并注入元素解析模块;

S2,利用元素解析模块对RPA元素进行拾取,获得所述RPA元素的种类信息、属性信息以及支持的操作动作信息;

S3,将步骤S2中获得的RPA元素的种类信息、属性信息以及支持的操作动作信息通过通信模块展示在组件展示界面;

S4,用户在组件展示界面确认拾取到的RPA元素为要操作的RPA元素后,确认完成拾取;

步骤S1中,所述注入元素解析模块的具体过程包括:

S11,在RPA进程中,调用系统并创建远程线程函数,同时在要操作的目标软件进程内创建一个线程,并加载服务注入模动态链接库文件;

S12,当服务注入模动态链接库文件加载到目标软件进程中时,调用初始化函数初始化COM环境,同时使用运行时交互函数加载CLR环境;

S13,CLR 环境加载完成后,在CLR 默认应用程序域执行元素解析模块;所述元素解析模块使用.NET 平台语言开发的托管语言链接库。

2.根据权利要求1所述的RPA场景下HTMLayout应用程序的元素定位方法,其特征在于,所述元素解析模块包括元素的定位过程和元素的操作过程。

3.根据权利要求2所述的RPA场景下HTMLayout应用程序的元素定位方法,其特征在于,所述元素的定位过程包括如下步骤:S21,获取HTMLayout进程模块中导出的获取当前鼠标下元素、获取子元素、获取元素属性的函数地址;

S22,根据步骤S21获得的函数地址执行对应函数,获取当前鼠标下元素的信息,并获取子元素个数;

S23,若获取的子元素为空,则记录当前鼠标下元素的节点信息,并递归获取当前节点的父元素,直到父元素的类名属性是窗口元素CoolWindow,最后拼接当前鼠标下元素的路径信息;

若获取的子元素不为空,则循环遍历子元素,找出包含当前拾取坐标的子元素,并重复步骤S22。

4.根据权利要求3所述的RPA场景下HTMLayout应用程序的元素定位方法,其特征在于,所述元素的操作过程包括如下步骤:S24,根据步骤S23获得的元素路径信息,获取元素路径中的第一个元素节点窗口信息;

S25,若所述元素节点窗口信息在当前系统运行中的窗口中,则查找当前窗口的所有子元素;

S26,获取所述元素路径信息中下一个节点的元素类型和属性信息,并从当前窗口的所有子元素中找出一个匹配的子元素;所述匹配的子元素的元素节点类型和属性信息,需与下一个节点的元素类型和属性信息都相同;

S27,若所有子元素都不匹配,则返回元素查找失败,并继续步骤S26,直到获取满足元素路径中最后一个节点的元素类型和属性信息,然后返回对应的元素类型和属性信息;

S28,根据返回的元素类型和属性信息,执行对应的操作。

5.根据权利要求1所述的RPA场景下HTMLayout应用程序的元素定位方法,其特征在于,步骤S1中,所述当前软件界面的窗口类名通过Windows应用程序接口获取。

6.RPA场景下HTMLayout应用程序的元素定位系统,用于实现权利要求1‑5任一项所述的RPA场景下HTMLayout应用程序的元素定位方法,其特征在于,所述RPA场景下HTMLayout应用程序的元素定位系统包括;

服务注入模块,用于以用户所要操作的软件界面对象作为输入,并判断当前软件界面的窗口类名是否为HTMLayout窗体,如果为HTMLayout窗体,则获取HTMLayout软件的进程信息,并注入元素解析模块;

元素解析模块,用于对RPA元素进行拾取,获得所述RPA元素的种类信息、属性信息以及支持的操作动作信息;

通信模块,用于在RPA进程和HTMLayout进程中传输数据;

组件展示界面模块,用于展示拾取到的RPA元素信息并供用户确认。

7.根据权利要求6所述的RPA场景下HTMLayout应用程序的元素定位系统,其特征在于,所述通信模块采用基于Socket的应用层通讯协议。

说明书 :

RPA场景下HTMLayout应用程序的元素定位方法及系统

技术领域

[0001] 本发明属于计算机技术领域,具体涉及RPA场景下HTMLayout应用程序的元素定位方法及系统。

背景技术

[0002] RPA(RPA Robotic Process Automation 机器人流程自动化)是一种通过软件机器人自动执行重复性、规则性任务的技术,用户可以通过专业的RPA流程编辑器,将规则的、固定逻辑的业务编排成对应的自动化任务,并将这些自动化任务按一定的调度条件(如定时触发、事件驱动、文件触发等)下发给软件机器人执行,软件机器人在执行任务时会模拟人类与计算机系统的交互,如鼠标点击、键盘输入、复制粘贴、文件操作等,来实现设定的业务逻辑。RPA对现有系统无侵入,无需进行复杂的系统改造和集成,可以在不改变现有系统架构的情况下实现业务流程的自动化。
[0003] RPA技术的核心是对计算机软件界面上的各类元素,例如按钮、文字、搜索框、输入框、可操作区域等,进行精确的定位(或叫拾取)和操作,进而完成流程执行所需的点击、跳转、输入、复制、粘贴等动作。对于桌面应用软件,传统的RPA元素拾取技术是基于操作系统提供的活动辅助功能接口(Active Accessibility)实现;对于浏览器中的网页,通常为了更为精确的获取网页(使用超文本标记语言(Hyper Text Markup Language, 后简称HTML)开发的页面)的结构和网页中的HTML标签的元信息;通常采用浏览器提供的插件扩展机制,借助浏览器公开的BOM和DOM API实现拾取;从而实现各类操作,如点击按钮、点击搜索框并输入文字、移动到某张图片上等。
[0004] 然而在RPA的实际场景中,往往有一些桌面应用软件,无法通过操作系统提供的活动辅助功能接口(Active Accessibility)或浏览器插件机制来定位到元素,比如在遇到使用HTMLayout框架开发的桌面应用软件,RPA软件所能获取到的仅仅是软件窗口信息,无法获取窗口内的元素信息,在这种情况下就需要采用其他技术来实现元素拾取。当前比较流行的是基于计算机视觉(Computer Vision, 后简称CV)技术实现的元素拾取,通过将界面上的各类元素作为图片中的一个个目标,借助CV领域的目标检测技术和光学字符识别(Optical Character Recognition, 后简称OCR)技术定位和识别出每个元素的位置和类型,进而支持一系列的移动、点击、输入等操作。
[0005] 然而上述通过计算机视觉方式虽然一定程度上解决了元素拾取,但是往往只能获取元素的坐标信息,无法精确地读取元素的类型、隐藏的文本、元素之间的层次关系,限制了其可以支持RPA软件操作元素的能力范围。
[0006] 因此,设计一种能够解决使用HTMLayout框架开发的客户端软件中RPA元素无法拾取问题的RPA场景下HTMLayout应用程序的元素定位方法及系统,就显得十分重要。

发明内容

[0007] 本发明是为了克服现有技术中,传统的RPA元素拾取方式针对HTMLayout 框架开发的客户端软件,无法识别软件界面中的元素类别、元素的属性信息,以及元素可以支持的操作的问题,提供了一种能够解决使用HTMLayout框架开发的客户端软件中RPA元素无法拾取问题的RPA场景下HTMLayout应用程序的元素定位方法及系统。
[0008] 为了达到上述发明目的,本发明采用以下技术方案:
[0009] RPA场景下HTMLayout应用程序的元素定位方法,包括如下步骤;
[0010] S1,以用户所要操作的软件界面对象作为输入,并判断当前软件界面的窗口类名是否为HTMLayout窗体,如果为HTMLayout窗体,则获取HTMLayout软件的进程信息,并注入元素解析模块;
[0011] S2,利用元素解析模块对RPA元素进行拾取,获得所述RPA元素的种类信息、属性信息以及支持的操作动作信息;
[0012] S3,将步骤S2中获得的RPA元素的种类信息、属性信息以及支持的操作动作信息通过通信模块展示在组件展示界面;
[0013] S4,用户在组件展示界面确认拾取到的RPA元素为要操作的RPA元素后,确认完成拾取。
[0014] 作为优选,步骤S1中,所述注入元素解析模块的具体过程包括:
[0015] S11,在RPA进程中,调用系统并创建远程线程函数,同时在要操作的目标软件进程内创建一个线程,并加载服务注入模动态链接库文件;
[0016] S12,当服务注入模动态链接库文件加载到目标软件进程中时,调用初始化函数初始化COM环境,同时使用运行时交互函数加载CLR环境;
[0017] S13,CLR 环境加载完成后,在CLR 默认应用程序域执行元素解析模块。
[0018] 作为优选,所述元素解析模块包括元素的定位过程和元素的操作过程。
[0019] 作为优选,所述元素的定位过程包括如下步骤:
[0020] S21,获取HTMLayout进程模块中导出的获取当前鼠标下元素、获取子元素、获取元素属性的函数地址;
[0021] S22,根据步骤S21获得的函数地址执行对应函数,获取当前鼠标下元素的信息,并获取子元素个数;
[0022] S23,若获取的子元素为空,则记录当前鼠标下元素的节点信息,并递归获取当前节点的父元素,直到父元素的类名属性是窗口元素CoolWindow,最后拼接当前鼠标下元素的路径信息;
[0023] 若获取的子元素不为空,则循环遍历子元素,找出包含当前拾取坐标的子元素,并重复步骤S22。
[0024] 作为优选,所述元素的操作过程包括如下步骤:
[0025] S24,根据步骤S23获得的元素路径信息,获取元素路径中的第一个元素节点窗口信息;
[0026] S25,若所述元素节点窗口信息在当前系统运行中的窗口中,则查找当前窗口的所有子元素;
[0027] S26,获取所述元素路径信息中下一个节点的元素类型和属性信息,并从当前窗口的所有子元素中找出一个匹配的子元素;所述匹配的子元素的元素节点类型和属性信息,需与下一个节点的元素类型和属性信息都相同;
[0028] S27,若所有子元素都不匹配,则返回元素查找失败,并继续步骤S26,直到获取满足元素路径中最后一个节点的元素类型和属性信息,然后返回对应的元素类型和属性信息。
[0029] S28,根据返回的元素类型和属性信息,执行对应的操作。
[0030] 作为优选,步骤S1中,所述当前软件界面的窗口类名通过Windows应用程序接口获取。
[0031] 本发明还提供了RPA场景下HTMLayout应用程序的元素定位系统包括;
[0032] 服务注入模块,用于以用户所要操作的软件界面对象作为输入,并判断当前软件界面的窗口类名是否为HTMLayout窗体,如果为HTMLayout窗体,则获取HTMLayout软件的进程信息,并注入元素解析模块;
[0033] 元素解析模块,用于对RPA元素进行拾取,获得所述RPA元素的种类信息、属性信息以及支持的操作动作信息;
[0034] 通信模块,用于在RPA进程和HTMLayout进程中传输数据;
[0035] 组件展示界面模块,用于展示拾取到的RPA元素信息并供用户确认。
[0036] 作为优选,所述通信模块采用基于Socket的应用层通讯协议。
[0037] 本发明与现有技术相比,有益效果是:(1)本发明提出的基于 HTMLayout框架的RPA元素定位方法和系统,首先利用了.Net开发平台支持的托管语言,如C#、VB.NET、F# 的高级特性去操作C++非托管语言开发的本机软件界面元素,提高了RPA软件在元素拾取时的开发效率;其次解决了传统RPA元素拾取技术无法识别HTMLayout框架开发的客户端软件界面元素或利用计算机视觉算法的目标元素检测技术无法获取这类软件界面元素的种类、属性的详细信息和元素支持的其他事件操作,提高了用户使用RPA软件开发这类软件自动化流程的适用场景,优化了用户体验;(2)本发明方案可以使得RPA软件适用于更多的场景、实现更多自由度的流程编辑、实现更高效率的流程开发,提供更友好的用户体验,从而构建更智能的新一代RPA软件产品。

附图说明

[0038] 图1为本发明中RPA场景下HTMLayout应用程序的元素定位系统的一种功能构架图;
[0039] 图2为本发明中元素的定位过程的一种流程图;
[0040] 图3为本发明实施例提供的RPA场景下HTMLayout应用程序的元素定位方法与RPA软件结合在实际运行时的一种流程图。

具体实施方式

[0041] 为了更清楚地说明本发明实施例,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0042] 本发明提供了RPA场景下HTMLayout应用程序的元素定位方法,首先通过Windows API 获取使用HTMLayout 框架开发的客户端软件进程和窗口句柄信息,为下面的元素拾取提供基础。进而,注入.NET开发平台的公共语言运行时CLR,使用CLR 加载.NET平台支持的托管语言,如C#、F#、VB.NET等开发的托管链接库即元素解析模块。然后,通过元素解析模块启动通信服务模块,最后,RPA软件可以发送获取元素信息、元素操作等指令到元素解析模块。元素解析模块执行完后返回执行结果。
[0043] 本发明所提的系统功能架构如图1所示,主要包括如下几个模块:
[0044] 服务注入模块:以用户所要操作的软件界面对象作为输入,利用Windows API 获取当前软件窗口的窗口类名是否是HTMLayout窗体,如果是HTMLayout 软件应用,进一步获取软件进程信息,然后注入元素解析模块;
[0045] 元素解析模块,用于对RPA元素进行拾取,获得所述RPA元素的种类信息、属性信息以及支持的操作动作信息;主要包括元素的定位过程和元素的操作过程两个主要部分;
[0046] 通信模块:主要职责是在RPA进程和HTMLayout进程中传输数据,数据流向为从RPA应用进程中发送需要操作的指令(元素拾取、元素操作)到HTMLayout应用进程,然后HTMLayout进程返回操作指令执行的结果数据。通常采用基于Socket的应用层通讯协议。
[0047] 最后,上述定位的元素结构体信息将通过通信模块展示在RPA应用软件的组件界面;
[0048] 组件展示界面模块,组件界面即RPA软件的编辑和开发界面,所要拾取的元素的相关信息将展示在界面上供用户确认,用户确认无误则可以完成拾取,而后在执行时调用该元素信息进行定位和操作;同时界面结构相关信息也在组件界面展示,提供用户进一步继续拾取元素或操作软件界面的参考,所展示的界面结构信息将以树状结构呈现。
[0049] 本发明还提供了的RPA场景下HTMLayout应用程序的元素定位方法,包括如下步骤;
[0050] 1.以用户所要操作的软件界面对象作为输入,并判断当前软件界面的窗口类名是否为HTMLayout窗体,如果为HTMLayout窗体,则获取HTMLayout软件的进程信息,并注入元素解析模块;
[0051] 2.利用元素解析模块对RPA元素进行拾取,获得所述RPA元素的种类信息、属性信息以及支持的操作动作信息;
[0052] 3.将步骤S2中获得的RPA元素的种类信息、属性信息以及支持的操作动作信息通过通信模块展示在组件展示界面;
[0053] 4.用户在组件展示界面确认拾取到的RPA元素为要操作的RPA元素后,确认完成拾取。
[0054] 步骤1中,注入元素解析模块的具体过程包括:
[0055] 1.在RPA进程中,调用系统并创建远程线程函数,同时在要操作的目标软件进程内创建一个线程(因为不在同一个进程中,所以叫做远程线程),并加载服务注入模动态链接库(DLL)文件;
[0056] 2.当服务注入模动态链接库文件加载到目标软件进程中时,调用初始化函数初始化COM环境,同时使用运行时交互函数加载CLR环境;
[0057] 3.CLR 环境加载完成后,在CLR 默认应用程序域执行元素解析模块(使用.NET 平台语言开发的托管语言链接库)。
[0058] .Net 平台是一个开发人员使用平台,可以利用平台提供的开发语言(C#、F#、VB.Net)和平台提供的基础类库开发不同的应用类型(桌面、Web、链接库),并由平台提供的CLR 执行引擎运行。.NET开发平台一般由Windows 操作系统一同安装。
[0059] .NET 平台相关术语:
[0060] 托管语言:托管语言是.NET 平台上的开发语言,和C++这种本机语言的区别是前者通常编译成中间代码(IL),由公共语言运行时(CLR)在程序运行时通过即时编译器(JIT)执行,C++这种本机语言是直接编译成目标机器代码,由操作系统执行。
[0061] CLR:是托管代码执行核心中的引擎。运行库为托管代码提供各种服务,如跨语言集成、代码访问安全性、对象生存期管理、调试和分析支持。它是整个.NET框架的核心,它为.NET应用程序提供了一个托管的代码执行环境。它实际上是驻留在内存里的一段代理代码,负责应用程序在整个执行期间的代码管理工作。
[0062] 进一步的,元素解析模块包括元素的定位过程和元素的操作过程。
[0063] 如图2所示,元素的定位过程包括如下步骤:
[0064] 1.获取HTMLayout进程模块中导出的获取当前鼠标下元素、获取子元素、获取元素属性的函数地址;
[0065] 2.根据步骤1获得的函数地址执行对应函数,获取当前鼠标下元素的信息,并获取子元素个数;
[0066] 3.若获取的子元素为空,则记录当前鼠标下元素的节点信息,并递归获取当前节点的父元素,直到父元素的类名属性是窗口元素CoolWindow,最后拼接当前鼠标下元素的路径信息;
[0067] 若获取的子元素不为空,则循环遍历子元素,找出包含当前拾取坐标的子元素,并重复步骤2。
[0068] 元素的操作过程包括如下步骤:
[0069] 4.根据步骤3获得的元素路径信息,获取元素路径中的第一个元素节点窗口信息;
[0070] 5.若所述元素节点窗口信息在当前系统运行中的窗口中,则查找当前窗口的所有子元素;
[0071] 6.获取所述元素路径信息中下一个节点的元素类型和属性信息,并从当前窗口的所有子元素中找出一个匹配的子元素;所述匹配的子元素的元素节点类型和属性信息,需与下一个节点的元素类型和属性信息都相同;
[0072] 7.若所有子元素都不匹配,则返回元素查找失败,并继续步骤6,直到获取满足元素路径中最后一个节点的元素类型和属性信息,然后返回对应的元素类型和属性信息。
[0073] 8.根据返回的元素类型和属性信息,执行对应的操作。
[0074] 如图3所示,展示了RPA软件定位HTMLayout应用软件的用户操作流程,同时展示本发明在实际应用中的实施方案以及如何将本发明方法和系统与RPA软件结合的细节,具体过程如下:
[0075] 1.RPA软件用户首先打开要操作和进行元素拾取的软件窗口界面,软件窗口的句柄和进程信息会作为输入传输到服务注入模块,服务注入模块将元素解析模块动态链接库文件注入到当前操作的软件进程中;
[0076] 2.用户使用RPA中的元素编辑器来对软件界面元素进行元素拾取,此时会将用户移动的鼠标位置通过通信模块发送给元素解析模块,元素解析模块在后台将完成以下一些操作,即该系统的各功能模块实现:
[0077] 1)元素解析模块会根据上述发明方案中的步骤获取当前鼠标坐标位置下的元素区域信息和元素路径表达式,本实例中,以旺店通ERP软件登录界面为例:当鼠标移动到系统桌面(1032,575)坐标时,会识别当前鼠标坐标位置下的“登录”按钮,获取的元素属性信息有:
[0078] 元素的区域信息:(1032,575,56,23)
[0079] 元素的标签类型:div
[0080] 元素的ID:btn_login
[0081] 元素在父元素中的索引位置:1
[0082] 元素的文本:登录
[0083] 元素的路径信息:CoolWindow[title=”登录旺店通”]/html[index=1]/body[index=1]/div[id=”btn_login”,index=1,text=”登录”]
[0084] 2)元素解析模块通过通信模块返回获取的元素区域信息和元素路径表达式,本实例中,返回得拾取元素信息经序列化后元素的Json 信息结构如下:
[0085] {
[0086]    "reactangle": {"x": 1032,"y": 575,"width": 56,"height": 23},[0087]    "path": [
[0088]        {"tag": "CoolWindow","props": [{"name": "title","value": "登录旺店通"}]},
[0089]        {"tag": "html","props": [{"name": "index","value": 1}]},[0090]        {"tag": "body","props": [{"name": "index","value": 1}]},[0091]        {"tag": "div","props": [{"name": "index","value": 1},{"name": "id","value": "btn_login"},{"name":"text","value": "登录"}]}
[0092]    ]
[0093] };
[0094] 3)组件展示界面展示拾取结果和界面结构。
[0095] 本实例中,组件展示界面以列表的形式展示拾取到的元素路径信息,以表格的信息展示组件的属性信息,以图片框的形式展示拾取到的元素区域截图信息。
[0096] 3.用户在组件展示界面确认所拾取到的元素就是要操作的元素后确认完成拾取;本实例中,用户可以确认组件展示界面的元素信息,如果与预期的相符,则确认完成拾取,如果与预期不相符,可以对拾取的信息进行编辑或重新拾取。
[0097] 4.确认拾取完成后RPA流程工程信息中将保存该步骤所要操作的元素的信息,至此这个操作的RPA流程编辑环节结束,所编辑的RPA流程可用于后续流程运行;
[0098] 5.RPA流程包中包含了整个流程的代码信息和操作信息,其中每一步操作又包含要操作的元素信息或动作信息,当流程运行到该步骤时,RPA软件获取待操作的元素信息;
[0099] 6.根据待操作元素信息和操作动作信息完成指定的操作。
[0100] 以上从流程编辑中拾取指定元素到最终完成元素操作,完成了一个完整的RPA使用流程。
[0101] 本发明独创性地提出基于 HTMLayout框架的RPA元素定位方法和系统,首先利用了.Net开发平台支持的托管语言,如C#、VB.NET、F# 的高级特性去操作C++ 非托管语言开发的本机软件界面元素,提高了RPA软件在元素拾取时的开发效率;其次解决了传统RPA元素拾取技术无法识别HTMLayout框架开发的客户端软件界面元素或利用计算机视觉算法的目标元素检测技术无法获取这类软件界面元素的种类、属性的详细信息和元素支持的其他事件操作,提高了用户使用RPA软件开发这类软件自动化流程的适用场景,进一步优化用户体验。
[0102] 本发明的创新点如下:
[0103] 1.本发明创造性地提出一种使用.NET平台托管的高级语言去操作C++开发的客户端软件,从而实现该类软件界面操作自动化;
[0104] 2.本发明创新性地设计并实现了HTMLayout软件应用的元素定位方法,该方法能保证针对这类软件为用户拾取到更精细、更准确的界面元素。
[0105] 以上所述仅是对本发明的优选实施例及原理进行了详细说明,对本领域的普通技术人员而言,依据本发明提供的思想,在具体实施方式上会有改变之处,而这些改变也应视为本发明的保护范围。