CN113268236B - 一种rpa系统中基于功能增强技术的ui元素拾取方法和系统 - Google Patents
一种rpa系统中基于功能增强技术的ui元素拾取方法和系统 Download PDFInfo
- Publication number
- CN113268236B CN113268236B CN202110549139.1A CN202110549139A CN113268236B CN 113268236 B CN113268236 B CN 113268236B CN 202110549139 A CN202110549139 A CN 202110549139A CN 113268236 B CN113268236 B CN 113268236B
- Authority
- CN
- China
- Prior art keywords
- event
- acquiring
- mode
- type
- gtk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 209
- 238000005516 engineering process Methods 0.000 title claims abstract description 12
- 230000008569 process Effects 0.000 claims abstract description 159
- 238000012545 processing Methods 0.000 claims abstract description 65
- 230000006870 function Effects 0.000 claims description 73
- 230000008859 change Effects 0.000 claims description 37
- 230000006378 damage Effects 0.000 claims description 36
- 230000002708 enhancing effect Effects 0.000 claims description 15
- 238000012544 monitoring process Methods 0.000 claims description 12
- 230000009191 jumping Effects 0.000 claims description 6
- 230000002787 reinforcement Effects 0.000 claims description 4
- 230000036316 preload Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 description 7
- 238000004801 process automation Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种RPA系统中基于功能增强技术的UI元素拾取方法,包括:获取操作系统所新创建的进程,对该进程进行功能增强处理,以得到按QT方式增强处理后的进程或按GTK方式增强处理后的进程;获取按QT方式增强处理后的进程或按GTK方式增强处理后的进程中所有UI元素的信息;根据UI元素的信息,维护以操作系统的桌面为根节点的UI元素树,获取用户当前鼠标的位置信息,并从UI元素树中获取其矩形边界中包含该位置、且位于操作系统最顶层的UI元素,将UI元素以高亮方式显示给用户。本发明能够解决由于Linux操作系统不提供获取UI元素信息的服务,导致无法利用操作系统提供的服务直接进行UI元素拾取操作的问题。
Description
技术领域
本发明属于机器人流程自动化(Robotic Process Automation,简称RPA)技术领域,更具体地,涉及一种RPA系统中基于功能增强技术的UI元素拾取方法和系统。
背景技术
机器人流程自动化(Robotic Process Automation,简称RPA)系统是一种自动化程序,用来模拟人类操作员的行为,在其他软件中自动地进行操作,自动操作包括填写信息、点击按钮等动作。
在RPA系统自动运作之前,需要预先设计好流程,通常通过RPA设计器来完成流程的设计,RPA设计器提供了用户界面(User Interface,简称UI)元素拾取器,帮助设计者在其他程序中识别、定位并获取UI元素的基本信息,这些信息包括UI元素类型、坐标、大小等。元素拾取器需要操作系统提供必要的支持,来正确地拾取UI信息。
由于Linux操作系统不提供获取UI元素信息的服务,因此无法利用操作系统提供的服务直接进行UI元素拾取操作。目前在Linux系统下,进行UI元素拾取的方法主要有两种:第一种是事先将要拾取的所有UI元素截图保存,拾取时,使用图片模式匹配的方法获取UI元素的位置信息,而UI元素的类型和大小信息则直接根据保存的图片获取;第二种是训练目标检测模型,使用AI中的目标检测方法,识别并获取UI元素的类型、位置、大小等信息。
然而,上述UI元素拾取方法都均在一些不可忽略的缺陷:第一、第一种方法需要事先对所有UI元素进行截图保存,流程开发者的工作量非常大;第二、第二种方法需要训练一个用于识别UI元素的目标检测模型,而目标检测模型的训练需要采集并标注大量的数据,工作量巨大,而且模型的准确率不可能达到100%,会有一定的几率出现识别错误;第三、一些特别设计的UI元素很难利用目标检测模型进行识别。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种RPA系统中基于功能增强技术的UI元素拾取方法和系统,其目的在于,解决由于Linux操作系统不提供获取UI元素信息的服务,导致无法利用操作系统提供的服务直接进行UI元素拾取操作的问题,以及现有其中一种UI元素拾取方法由于需要事先对所有UI元素进行截图保存,导致流程开发者的工作量非常大的技术问题,以及另一种UI元素拾取方法由于需要使用目标检测模型造成工作量大、且会出现识别错误的技术问题,以及无法拾取一些特别设计的UI元素的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种RPA系统中基于功能增强技术的UI元素拾取方法,包括:获取操作系统所新创建的进程,对该进程进行功能增强处理,以得到按QT方式增强处理后的进程或按GTK方式增强处理后的进程;获取按QT方式增强处理后的进程或按GTK方式增强处理后的进程中所有UI元素的信息;根据UI元素的信息,维护以操作系统的桌面为根节点的UI元素树,获取用户当前鼠标的位置信息,并从UI元素树中获取其矩形边界中包含该位置、且位于操作系统最顶层的UI元素,将UI元素以高亮方式显示给用户。
优选地,步骤(1)包括以下子步骤:
(1-1)获取操作系统启动后新创建的进程;
(1-2)判断是否能够在步骤(1-1)获取的进程所对应的进程空间中搜索到预设的多个特征字符串中的一个或多个,如果是则进入步骤(1-3),否则过程结束;
(1-3)根据搜索到的一个或多个特征字符串确定步骤(1-1)获取的进程所使用的UI库的类型,并判断该类型是QT类型,还是GTK类型,如果是QT类型则按照QT方式对步骤(1-1)获取的进程进行增强,以得到按QT方式增强处理后的进程。如果是GTK类型则按照GTK方式对步骤(1-1)获取的进程进行增强,以得到按GTK方式增强处理后的进程。
优选地,步骤(1)获取操作系统所新创建的进程的方法可以是NetlinkConnector、So preload、Audit、或Syscall hook;
使用Netlink Connector方法获取操作系统启动后所新创建的进程的具体过程为:通过Linux操作系统的Netlink Connector协议,建立与Linux内核的连接,获得一个进程事件连接器;通过进程事件连接器,订阅进程创建事件;通过订阅的进程创建事件,获得新创建的进程。
优选地,步骤(1-3)中按照QT方式对步骤(1-1)获取的进程进行增强,以得到按QT方式增强处理后的进程,这一过程具体为:
在步骤(1-1)获取的进程中搜索UI事件处理函数、及其入口,修改该入口,使得UI事件处理函数在执行其固有功能之前,先对QT类型的UI库对应的UI事件进行监听,以获取UI事件中的UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,并根据UI元素创建事件获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小;根据UI元素销毁事件获取该UI元素的ID;根据UI元素移动事件获取该UI元素的ID、UI元素的位置;根据UI元素大小变更事件获取该UI元素的ID、UI元素的大小;
步骤(1-3)中按照GTK方式对步骤(1-1)获取的进程进行增强,以得到按GTK方式增强处理后的进程,这一过程具体为:
在步骤(1-1)获取的进程中搜索UI事件处理函数、及其入口,修改该入口,使得UI事件处理函数在执行其固有功能之前,先对GTK类型的UI库对应的UI事件进行监听,以获取UI事件中的UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,并根据UI元素创建事件获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小;根据UI元素销毁事件获取该UI元素的ID;根据UI元素移动事件获取该UI元素的ID、UI元素的位置;根据UI元素大小变更事件获取该UI元素的ID、UI元素的大小。
优选地,修改UI事件处理函数入口,使得UI事件处理函数在执行其固有功能之前,先对QT类型或GTK类型的UI库对应的UI事件进行监听的具体过程为:在步骤(1-1)的进程中获得一块空闲内存;修改UI事件处理函数入口处的机器指令为jmp指令,跳转到空闲内存处,并将原有机器指令保存起来;在空闲内存中写入call指令,对QT类型或GTK类型的UI库对应的UI事件进行监听;在空闲内存中接着写入保存的原有机器指令;在空闲内存中接着写入jmp指令,跳到UI事件处理函数入口处的jmp指令之后的位置,完成UI事件处理函数固有功能的执行。
优选地,步骤(2)具体为:针对按QT方式增强处理后的进程,在监听QT类型的UI库对应的UI事件时,判断该UI事件是否为UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件中的一种,如果是UI元素创建事件,则获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小,如果是UI元素销毁事件,则获取该UI元素的ID,如果是UI元素移动事件,则获取该UI元素的ID、UI元素的位置,如果是UI元素大小变更事件,则获取该UI元素的ID、UI元素的大小;
针对按GTK方式增强处理后的进程,在监听到GTK类型的UI库对应的UI事件时,判断该UI事件是否为UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件中的一种,如果是UI元素创建事件,则获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小,如果是UI元素销毁事件,则获取该UI元素的ID,如果是UI元素移动事件,则获取该UI元素的ID、UI元素的位置,如果是UI元素大小变更事件,则获取该UI元素的ID、UI元素的大小。
优选地,操作系统的桌面是步骤(1)按QT方式增强处理后的进程或按GTK方式增强处理后的进程所对应窗口的父窗口;
步骤(3)具体为,针对UI元素创建事件,以其对应的UI元素的父窗口ID为关键字,在UI元素树(其初始为一个桌面节点)中搜索ID为该UI元素的父窗口ID的节点,将该UI元素添加到UI元素树中,作为搜索到的父窗口节点的子结点;
针对UI元素销毁事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中删除以该节点为根节点的子树;
针对UI元素移动事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中更新该节点的UI元素位置信息为新获得的位置信息;
针对UI元素大小变更事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中更新该节点的UI元素大小信息为新获得的大小信息。
优选地,步骤(4)包括以下子步骤:
(4-1)获取用户当前鼠标的位置;
(4-2)遍历UI元素树,以找到其矩形边界中包含该位置的所有UI元素,并从中获取面积最小的UI元素。
优选地,步骤(4-2)中遍历UI元素树的方法是使用深度优先遍历(Deep FirstSearch,简称DFS)或广度优先遍历(Breadth First Search,简称BFS);
判断UI元素的矩形边界包含用户当前鼠标的位置的原则是:UI元素的左上角的横坐标小于等于用户当前鼠标的位置的横坐标;UI元素的左上角的纵坐标小于等于用户当前鼠标的位置的纵坐标;UI元素的右下角的横坐标大于等于用户当前鼠标的位置的横坐标;UI元素的右下角的纵坐标大于等于用户当前鼠标的位置的纵坐标。
按照本发明的另一方面,提供了一种RPA系统中基于功能增强技术的UI元素拾取系统,包括:
第一模块,用于获取操作系统所新创建的进程,对该进程进行功能增强处理,以得到按QT方式增强处理后的进程或按GTK方式增强处理后的进程;
第二模块,用于获取第一模块按QT方式增强处理后的进程或按GTK方式增强处理后的进程中所有UI元素的信息;
第三模块,用于根据第二模块获得的UI元素的信息,维护以操作系统的桌面为根节点的UI元素树;
第四模块,用于获取用户当前鼠标的位置信息,并从第三模块的UI元素树中获取其矩形边界中包含该位置、且位于操作系统最顶层的UI元素;
第五模块,用于将第四模块获得的UI元素以高亮方式显示给用户。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)由于本发明采用了步骤(1)到步骤(2),其对进程进行了增强处理,增强后的进程能够监听UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,通过这些事件可以获取UI元素的信息,因此能够解决由于Linux操作系统不提供获取UI元素信息的服务,无法利用操作系统提供的服务直接进行UI元素拾取操作的问题;
(2)由于本发明采用了步骤(2)到步骤(5),其利用获取的UI元素信息构建了一颗以桌面为根节点的UI元素树,不需要对UI元素进行截图,因此能够解决现有UI元素拾取方法由于需要事先对所有UI元素进行截图保存,导致流程开发者的工作量非常大的技术问题;
(3)由于本发明采用了步骤(1)到步骤(2),其使用内核增强技术,通过增强的进程直接使用UI事件处理函数提供的UI元素信息,不需要事先准备大量的训练数据,也不会出现识别错误问题,因此能够解决现有UI元素拾取方法由于需要使用目标检测模型造成工作量大、且会出现识别错误的技术问题;
(4)由于本发明采用了步骤(1)到步骤(2),其使用内核增强技术,通过增强的进程直接使用UI事件处理函数提供的UI元素信息,可以获取所有类型的UI元素的信息,因此能够解决现有UI元素拾取方法无法拾取一些特别设计的UI元素的技术问题。
附图说明
图1是本发明RPA系统中基于功能增强技术的UI元素拾取方法的流程图;
图2是本发明RPA系统中基于功能增强技术的UI元素拾取方法的详细流程图;
图3是本发明构建的UI元素树的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明提供了一种RPA系统中基于功能增强技术的UI元素拾取方法,包括以下步骤:
(1)获取操作系统所新创建的进程,对该进程进行功能增强处理,以得到按QT方式增强处理后的进程或按GTK方式增强处理后的进程;
具体而言,本步骤包括以下子步骤:
(1-1)获取操作系统启动后新创建的进程;
具体而言,获取操作系统所新创建的进程的方法主要有Netlink Connector、Sopreload、Audit、Syscall hook,优选使用Netlink Connector方法。
具体而言,使用Netlink Connector方法获取操作系统启动后所新创建的进程的具体过程为:通过Linux操作系统的Netlink Connector协议,建立与Linux内核的连接,获得一个进程事件连接器;通过进程事件连接器,订阅进程创建事件;通过订阅的进程创建事件,获得新创建的进程;
(1-2)判断是否能够在步骤(1-1)获取的进程所对应的进程空间中搜索到预设的多个特征字符串中的一个或多个,如果是则进入步骤(1-3),否则过程结束;
具体而言,预设的多个特征字符串可以选择UI库中独有的字符串,优选地,QT库的特征字符串为_ZN10QTabWidget5eventEP6QEvent,GTK库的特征字符串为gtk_widget_new;
(1-3)根据搜索到的一个或多个特征字符串确定步骤(1-1)获取的进程所使用的UI库的类型,并判断该类型是QT类型,还是GTK类型,如果是QT类型则按照QT方式对步骤(1-1)获取的进程进行增强,以得到按QT方式增强处理后的进程。如果是GTK类型则按照GTK方式对步骤(1-1)获取的进程进行增强,以得到按GTK方式增强处理后的进程。
具体而言,本步骤按照QT方式对步骤(1-1)获取的进程进行增强,以得到按QT方式增强处理后的进程,这一过程具体为:
在步骤(1-1)获取的进程中搜索UI事件处理函数、及其入口,修改该入口,使得UI事件处理函数在执行其固有功能之前,先对QT类型的UI库对应的UI事件进行监听,以获取UI事件中的UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,并根据UI元素创建事件获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小;根据UI元素销毁事件获取该UI元素的ID;根据UI元素移动事件获取该UI元素的ID、UI元素的位置;根据UI元素大小变更事件获取该UI元素的ID、UI元素的大小;
具体而言,本步骤按照GTK方式对步骤(1-1)获取的进程进行增强,以得到按GTK方式增强处理后的进程,这一过程具体为:
在步骤(1-1)获取的进程中搜索UI事件处理函数、及其入口,修改该入口,使得UI事件处理函数在执行其固有功能之前,先对GTK类型的UI库对应的UI事件进行监听,以获取UI事件中的UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,并根据UI元素创建事件获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小;根据UI元素销毁事件获取该UI元素的ID;根据UI元素移动事件获取该UI元素的ID、UI元素的位置;根据UI元素大小变更事件获取该UI元素的ID、UI元素的大小;
具体而言,UI事件处理函数是UI库用于处理UI元素的创建、销毁、位置变化、大小变化等消息的函数。
具体而言,修改UI事件处理函数入口,使得UI事件处理函数在执行其固有功能之前,先对QT类型或GTK类型的UI库对应的UI事件进行监听的具体过程为:在步骤(1-1)的进程中获得一块空闲内存;修改UI事件处理函数入口处的机器指令为jmp指令,跳转到空闲内存处,并将原有机器指令保存起来;在空闲内存中写入call指令,对QT类型或GTK类型的UI库对应的UI事件进行监听;在空闲内存中接着写入保存的原有机器指令;在空闲内存中接着写入jmp指令,跳到UI事件处理函数入口处的jmp指令之后的位置,完成UI事件处理函数固有功能的执行。
上述步骤(1-1)到(1-3)的优点在于,对使用不同UI库(QT库或GTK库)的进程分别进行有针对性地功能增强,解决Linux操作系统不提供获取UI元素信息服务的问题;
上述步骤(1-1)到(1-3)的优点还在于,对使用不同版本QT库的进程的增强方式是一致的;
上述步骤(1-1)到(1-3)的优点还在于,对使用不同版本GTK库的进程的增强方式是一致的。
(2)获取步骤(1)按QT方式增强处理后的进程或按GTK方式增强处理后的进程中所有UI元素的信息;
本步骤具体为:针对按QT方式增强处理后的进程,在监听QT类型的UI库对应的UI事件时,判断该UI事件是否为UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件中的一种,如果是UI元素创建事件,则获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小,如果是UI元素销毁事件,则获取该UI元素的ID,如果是UI元素移动事件,则获取该UI元素的ID、UI元素的位置,如果是UI元素大小变更事件,则获取该UI元素的ID、UI元素的大小;
针对按GTK方式增强处理后的进程,在监听到GTK类型的UI库对应的UI事件时,判断该UI事件是否为UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件中的一种,如果是UI元素创建事件,则获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小,如果是UI元素销毁事件,则获取该UI元素的ID,如果是UI元素移动事件,则获取该UI元素的ID、UI元素的位置,如果是UI元素大小变更事件,则获取该UI元素的ID、UI元素的大小。
(3)根据步骤(2)获得的UI元素的信息,维护以操作系统的桌面为根节点的UI元素树;
具体而言,操作系统的桌面是步骤(1)按QT方式增强处理后的进程或按GTK方式增强处理后的进程所对应窗口的父窗口;
本步骤具体为,针对UI元素创建事件,以其对应的UI元素的父窗口ID为关键字,在UI元素树(其初始为一个桌面节点)中搜索ID为该UI元素的父窗口ID的节点,将该UI元素添加到UI元素树中,作为搜索到的父窗口节点的子结点;
针对UI元素销毁事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中删除以该节点为根节点的子树;
针对UI元素移动事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中更新该节点的UI元素位置信息为新获得的位置信息;
针对UI元素大小变更事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中更新该节点的UI元素大小信息为新获得的大小信息。
如图3所示,其示出本步骤构建的UI元素树,从图3可以看出,UI元素树以桌面为根节点,包含2颗子树,左边的子树包含进程1的所有UI元素,即一个窗口、以该窗口为父窗口的UI元素1和UI元素2;右边的子树包含进程2的所有UI元素,即一个窗口、以该窗口为父窗口的UI元素3和UI元素4;
本步骤的优点在于,UI元素树实时地记录了操作系统在任意时刻的所有UI元素的信息,为UI元素信息的获取提供了可靠的途径。
(4)获取用户当前鼠标的位置信息,并从步骤(3)的UI元素树中获取其矩形边界中包含该位置、且位于操作系统最顶层的UI元素;
具体而言,本步骤包括以下子步骤:
(4-1)获取用户当前鼠标的位置;
(4-2)遍历UI元素树,以找到其矩形边界中包含该位置的所有UI元素,并从中获取面积最小的UI元素;
本步骤中遍历UI元素树的方法是使用深度优先遍历(Deep First Search,简称DFS)或广度优先遍历(Breadth First Search,简称BFS);
具体而言,坐标原点为计算机屏幕的左上角,UI元素的矩形边界是由步骤(2)中获取的UI元素的位置和大小确定,矩形的左上角为UI元素的位置,矩形的右下角的横坐标为UI元素的横坐标加上UI元素的宽度,矩形的右下角的纵坐标为UI元素的纵坐标加上UI元素的高度;
具体而言,判断UI元素的矩形边界包含用户当前鼠标的位置的原则是:UI元素的左上角的横坐标小于等于用户当前鼠标的位置的横坐标;UI元素的左上角的纵坐标小于等于用户当前鼠标的位置的纵坐标;UI元素的右下角的横坐标大于等于用户当前鼠标的位置的横坐标;UI元素的右下角的纵坐标大于等于用户当前鼠标的位置的纵坐标;
具体而言,获得符合条件的UI元素中面积最小的UI元素的方法是:通过步骤(2)中获取的UI元素的大小,计算这些UI元素的面积,选取其中面积最小的UI元素。
上述步骤(4-1)到(4-2)的优点在于,每次仅获取鼠标位置处的最顶层UI元素信息,减少了数据通信量,提高了获取信息的效率。
(5)将步骤(4)获得的UI元素以高亮方式显示给用户。
具体而言,如果用户确定需要拾取UI元素信息,则其使用鼠标左键确认即可。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种RPA系统中基于功能增强技术的UI元素拾取方法,其特征在于,包括以下步骤:
(1)获取操作系统所新创建的进程,对该进程进行功能增强处理,以得到按QT方式增强处理后的进程或按GTK方式增强处理后的进程;步骤(1)包括以下子步骤:
(1-1)获取操作系统启动后新创建的进程;
(1-2)判断是否能够在步骤(1-1)获取的进程所对应的进程空间中搜索到预设的多个特征字符串中的一个或多个,如果是则进入步骤(1-3),否则过程结束;
(1-3)根据搜索到的一个或多个特征字符串确定步骤(1-1)获取的进程所使用的UI库的类型,并判断该类型是QT类型,还是GTK类型,如果是QT类型则按照QT方式对步骤(1-1)获取的进程进行增强,以得到按QT方式增强处理后的进程;如果是GTK类型则按照GTK方式对步骤(1-1)获取的进程进行增强,以得到按GTK方式增强处理后的进程;
(2)获取步骤(1)按QT方式增强处理后的进程或按GTK方式增强处理后的进程中所有UI元素的信息;
(3)根据步骤(2)获得的UI元素的信息,维护以操作系统的桌面为根节点的UI元素树;
(4)获取用户当前鼠标的位置信息,并从步骤(3)的UI元素树中获取其矩形边界中包含该位置、且位于操作系统最顶层的UI元素;
(5)将步骤(4)获得的UI元素以高亮方式显示给用户;
步骤(1-3)中按照QT方式对步骤(1-1)获取的进程进行增强,以得到按QT方式增强处理后的进程,这一过程具体为:
在步骤(1-1)获取的进程中搜索UI事件处理函数、及其入口,修改该入口,使得UI事件处理函数在执行其固有功能之前,先对QT类型的UI库对应的UI事件进行监听,以获取UI事件中的UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,并根据UI元素创建事件获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小;根据UI元素销毁事件获取该UI元素的ID;根据UI元素移动事件获取该UI元素的ID、UI元素的位置;根据UI元素大小变更事件获取该UI元素的ID、UI元素的大小;
步骤(1-3)中按照GTK方式对步骤(1-1)获取的进程进行增强,以得到按GTK方式增强处理后的进程,这一过程具体为:
在步骤(1-1)获取的进程中搜索UI事件处理函数、及其入口,修改该入口,使得UI事件处理函数在执行其固有功能之前,先对GTK类型的UI库对应的UI事件进行监听,以获取UI事件中的UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,并根据UI元素创建事件获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小;根据UI元素销毁事件获取该UI元素的ID;根据UI元素移动事件获取该UI元素的ID、UI元素的位置;根据UI元素大小变更事件获取该UI元素的ID、UI元素的大小。
2.根据权利要求1所述的RPA系统中基于功能增强技术的UI元素拾取方法,其特征在于,
步骤(1)获取操作系统所新创建的进程的方法是Netlink Connector、So preload、Audit、或Syscall hook;
使用Netlink Connector方法获取操作系统启动后所新创建的进程的具体过程为:通过Linux操作系统的Netlink Connector协议,建立与Linux内核的连接,获得一个进程事件连接器;通过进程事件连接器,订阅进程创建事件;通过订阅的进程创建事件,获得新创建的进程。
3.根据权利要求2所述的RPA系统中基于功能增强技术的UI元素拾取方法,其特征在于,修改UI事件处理函数入口,使得UI事件处理函数在执行其固有功能之前,先对QT类型或GTK类型的UI库对应的UI事件进行监听的具体过程为:在步骤(1-1)的进程中获得一块空闲内存;修改UI事件处理函数入口处的机器指令为jmp指令,跳转到空闲内存处,并将原有机器指令保存起来;在空闲内存中写入call指令,对QT类型或GTK类型的UI库对应的UI事件进行监听;在空闲内存中接着写入保存的原有机器指令;在空闲内存中接着写入jmp指令,跳到UI事件处理函数入口处的jmp指令之后的位置,完成UI事件处理函数固有功能的执行。
4.根据权利要求3所述的RPA系统中基于功能增强技术的UI元素拾取方法,其特征在于,步骤(2)具体为:针对按QT方式增强处理后的进程,在监听QT类型的UI库对应的UI事件时,判断该UI事件是否为UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件中的一种,如果是UI元素创建事件,则获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小,如果是UI元素销毁事件,则获取该UI元素的ID,如果是UI元素移动事件,则获取该UI元素的ID、UI元素的位置,如果是UI元素大小变更事件,则获取该UI元素的ID、UI元素的大小;
针对按GTK方式增强处理后的进程,在监听到GTK类型的UI库对应的UI事件时,判断该UI事件是否为UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件中的一种,如果是UI元素创建事件,则获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小,如果是UI元素销毁事件,则获取该UI元素的ID,如果是UI元素移动事件,则获取该UI元素的ID、UI元素的位置,如果是UI元素大小变更事件,则获取该UI元素的ID、UI元素的大小。
5.根据权利要求4所述的RPA系统中基于功能增强技术的UI元素拾取方法,其特征在于,
操作系统的桌面是步骤(1)按QT方式增强处理后的进程或按GTK方式增强处理后的进程所对应窗口的父窗口;
步骤(3)具体为,针对UI元素创建事件,以其对应的UI元素的父窗口ID为关键字,在UI元素树中搜索ID为该UI元素的父窗口ID的节点,将该UI元素添加到UI元素树中,作为搜索到的父窗口节点的子结点;
针对UI元素销毁事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中删除以该节点为根节点的子树;
针对UI元素移动事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中更新该节点的UI元素位置信息为新获得的位置信息;
针对UI元素大小变更事件,以其对应的UI元素的ID为关键字,在UI元素树中搜索ID为该UI元素ID的节点,在UI元素树中更新该节点的UI元素大小信息为新获得的大小信息。
6.根据权利要求5所述的RPA系统中基于功能增强技术的UI元素拾取方法,其特征在于,步骤(4)包括以下子步骤:
(4-1)获取用户当前鼠标的位置;
(4-2)遍历UI元素树,以找到其矩形边界中包含该位置的所有UI元素,并从中获取面积最小的UI元素。
7.根据权利要求6所述的RPA系统中基于功能增强技术的UI元素拾取方法,其特征在于,
步骤(4-2)中遍历UI元素树的方法是使用深度优先遍历DFS或广度优先遍历BFS;
判断UI元素的矩形边界包含用户当前鼠标的位置的原则是:UI元素的左上角的横坐标小于等于用户当前鼠标的位置的横坐标;UI元素的左上角的纵坐标小于等于用户当前鼠标的位置的纵坐标;UI元素的右下角的横坐标大于等于用户当前鼠标的位置的横坐标;UI元素的右下角的纵坐标大于等于用户当前鼠标的位置的纵坐标。
8.一种RPA系统中基于功能增强技术的UI元素拾取系统,其特征在于,包括:
第一模块,用于获取操作系统所新创建的进程,对该进程进行功能增强处理,以得到按QT方式增强处理后的进程或按GTK方式增强处理后的进程;第一模块包括以下子模块:
第一子模块,用于获取操作系统启动后新创建的进程;
第二子模块,用于判断是否能够在第一子模块获取的进程所对应的进程空间中搜索到预设的多个特征字符串中的一个或多个,如果是则进入第三子模块,否则过程结束;
第三子模块,用于根据搜索到的一个或多个特征字符串确定第一子模块获取的进程所使用的UI库的类型,并判断该类型是QT类型,还是GTK类型,如果是QT类型则按照QT方式对第一子模块获取的进程进行增强,以得到按QT方式增强处理后的进程;如果是GTK类型则按照GTK方式对步骤(1-1)获取的进程进行增强,以得到按GTK方式增强处理后的进程;
第二模块,用于获取第一模块按QT方式增强处理后的进程或按GTK方式增强处理后的进程中所有UI元素的信息;
第三模块,用于根据第二模块获得的UI元素的信息,维护以操作系统的桌面为根节点的UI元素树;
第四模块,用于获取用户当前鼠标的位置信息,并从第三模块的UI元素树中获取其矩形边界中包含该位置、且位于操作系统最顶层的UI元素;
第五模块,用于将第四模块获得的UI元素以高亮方式显示给用户;
第三子模块中按照QT方式对第一子模块获取的进程进行增强,以得到按QT方式增强处理后的进程,这一过程具体为:
在第一子模块获取的进程中搜索UI事件处理函数、及其入口,修改该入口,使得UI事件处理函数在执行其固有功能之前,先对QT类型的UI库对应的UI事件进行监听,以获取UI事件中的UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,并根据UI元素创建事件获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小;根据UI元素销毁事件获取该UI元素的ID;根据UI元素移动事件获取该UI元素的ID、UI元素的位置;根据UI元素大小变更事件获取该UI元素的ID、UI元素的大小;
第三子模块中按照GTK方式对第一子模块获取的进程进行增强,以得到按GTK方式增强处理后的进程,这一过程具体为:
在第一子模块获取的进程中搜索UI事件处理函数、及其入口,修改该入口,使得UI事件处理函数在执行其固有功能之前,先对GTK类型的UI库对应的UI事件进行监听,以获取UI事件中的UI元素创建事件、UI元素销毁事件、UI元素移动事件、UI元素大小变更事件,并根据UI元素创建事件获取该UI元素的ID、UI元素的父窗口ID、UI元素的类型、UI元素的位置和大小;根据UI元素销毁事件获取该UI元素的ID;根据UI元素移动事件获取该UI元素的ID、UI元素的位置;根据UI元素大小变更事件获取该UI元素的ID、UI元素的大小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110549139.1A CN113268236B (zh) | 2021-05-20 | 2021-05-20 | 一种rpa系统中基于功能增强技术的ui元素拾取方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110549139.1A CN113268236B (zh) | 2021-05-20 | 2021-05-20 | 一种rpa系统中基于功能增强技术的ui元素拾取方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113268236A CN113268236A (zh) | 2021-08-17 |
CN113268236B true CN113268236B (zh) | 2024-03-08 |
Family
ID=77231943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110549139.1A Active CN113268236B (zh) | 2021-05-20 | 2021-05-20 | 一种rpa系统中基于功能增强技术的ui元素拾取方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113268236B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11966566B2 (en) | 2021-10-21 | 2024-04-23 | UiPath, Inc. | Mapping interactive UI elements to RPA object repositories for RPA development |
CN114995816A (zh) * | 2022-06-24 | 2022-09-02 | 中电金信软件有限公司 | 业务流程配置方法、装置、电子设备及可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018183812A1 (en) * | 2017-03-30 | 2018-10-04 | JIBO, Inc. | Persistent companion device configuration and deployment platform |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644367B2 (en) * | 2003-05-16 | 2010-01-05 | Microsoft Corporation | User interface automation framework classes and interfaces |
US7334223B2 (en) * | 2004-01-19 | 2008-02-19 | Tata Consultancy Services, Ltd. | Apparatus and method for automatically migrating client server applications to other architectures and platforms |
US9858050B2 (en) * | 2013-07-02 | 2018-01-02 | Youi Labs Inc. | System and method for streamlining user interface development |
US11281936B2 (en) * | 2018-12-31 | 2022-03-22 | Kofax, Inc. | Systems and methods for identifying processes for robotic automation and building models therefor |
US11074063B2 (en) * | 2019-09-10 | 2021-07-27 | International Business Machines Corporation | Automatic upgrade of robotic process automation using a computer |
-
2021
- 2021-05-20 CN CN202110549139.1A patent/CN113268236B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018183812A1 (en) * | 2017-03-30 | 2018-10-04 | JIBO, Inc. | Persistent companion device configuration and deployment platform |
Also Published As
Publication number | Publication date |
---|---|
CN113268236A (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113268236B (zh) | 一种rpa系统中基于功能增强技术的ui元素拾取方法和系统 | |
US9448908B2 (en) | System and method for model based session management | |
US20140189576A1 (en) | System and method for visual matching of application screenshots | |
US20140218385A1 (en) | System and method for visual segmentation of application screenshots | |
CN110362480A (zh) | 客户端埋点测试方法、装置、设备及存储介质 | |
CN104268006A (zh) | 键鼠脚本的回放方法及装置 | |
WO2014037950A1 (en) | System and method for automatic modeling of an application | |
CN103502936A (zh) | 基于图像的自动化系统和方法 | |
CN113342685A (zh) | 精准测试方法、装置、计算机设备和存储介质 | |
CN113032264A (zh) | 页面视图控件的检测方法及装置 | |
EP2951680B1 (en) | Acquiring identification of an application lifecycle management entity associated with similar code | |
CN115657890A (zh) | 一种pra机器人可定制方法 | |
Ye et al. | An empirical study of GUI widget detection for industrial mobile games | |
Sun et al. | Ui components recognition system based on image understanding | |
CN109917978B (zh) | 基于bim模型的批注对应构件显示方法、装置以及存储装置 | |
CN114419631A (zh) | 一种基于rpa的网管虚拟系统 | |
Jacob et al. | A non-intrusive approach for 2d platform game design analysis based on provenance data extracted from game streaming | |
CN115481025A (zh) | 自动化测试的脚本录制方法、装置、计算机设备及介质 | |
JPWO2018042646A1 (ja) | 分析システム及び分析方法 | |
CN115546824B (zh) | 禁忌图片识别方法、设备及存储介质 | |
CN115269101A (zh) | 一种基于RPA实现Excel数据透视表拾取的方法 | |
CN112685056A (zh) | 脚本更新方法及装置 | |
CN112650796A (zh) | 一种自动化的应用数据收集、存储管理系统 | |
CN112131418A (zh) | 目标标注方法、目标标注装置和计算机可读存储介质 | |
CN112181809B (zh) | 一种基于多种定位方法的图形用户界面自动化测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |