窗口元素抓取方法、装置以及存储介质制造方法及图纸

技术编号:33624933 阅读:26 留言:0更新日期:2022-06-02 00:54
本申请公开了一种窗口元素抓取方法、装置以及存储介质,其中该方法包括:响应于用户选择程序的第一触发操作,确定目标窗口应用程序;获取目标窗口应用程序包含的窗口元素,并根据窗口元素在内存中构建树形结构,其中树形结构中的节点与窗口元素在目标窗口应用程序中的排列相关并且包含窗口元素的结构信息;以及响应于用户选择抓取的目标窗口元素的第二触发操作,根据树形结构确定与目标窗口元素相关的窗口元素信息。关的窗口元素信息。关的窗口元素信息。

【技术实现步骤摘要】
窗口元素抓取方法、装置以及存储介质


[0001]本申请涉及自动控制
,特别是涉及一种窗口元素抓取方法、装置以及存储介质。

技术介绍

[0002]RPA是Robotic Process Automation的首字母缩写,即机器人流程自动化。RPA要自动的同屏幕上的各种窗口、按钮、下拉列表等不同元素进行交互,首先就要定位到元素的位置(这里的位置不仅包括元素在屏幕上的坐标位置还包括元素在整个程序窗口的结构位置),然后获取元素信息,再对元素做相应的操作。所以定位及获取元素信息的抓屏技术作为RPA技术的基础显得尤为重要。由于用户在不同的操作系统,不同的软件窗口上作业,所以要求RPA能在不同的操作系统和不同的软件窗口上进行操作,那么对窗口元素的抓取也是在不同操作系统和不同的窗口上进行,这使得抓屏是多种方法实现的复合技术。目前抓屏的技术主要包含:1.通过系统的API基于窗口元素的树形结构来定位窗口元素及获取窗口元素的信息;2.使用图像识别和OCR的技术来定位和获取元素信息;3.直接使用窗口元素的坐标位置来定位窗口元素。目前使用频率最高,操作最稳定的抓屏技术是通过系统的API基于窗口元素的树形结构来定位窗口元素及获取窗口元素的信息。RPA的抓屏程序通过窗口的可访问技术(如UIA、MSAA)或程序的API及程序脚本(如IE浏览器、Chrome浏览器)和窗口元素进行交互;这种方法一般直接调用系统或相应程序的API函数来获取窗口的可访问对象,通过窗口元素的可访问对象,获取窗口元素的坐标位置和窗口元素的信息,定位元素在整个窗口元素中的结构位置。
[0003]然而,现有的RPA的抓屏程序和用户操作的业务程序是在两个进程中的,抓屏程序要获取其他程序窗口的信息,就需要和其他程序进行进程间通信,进程间通信耗时是远大于进程内的数据访问的。抓屏程序直接使用系统和程序API函数获取只有少量窗口元素的程序窗口信息的时效性是勉强可以接受的。但对于复杂的窗口程序或者丰富的网页,直接使用API函数获取元素信息特别是定位元素在整个窗口中的结构位置时,抓屏程序会和业务窗口进行大量的进程间通信,消耗大量时间,这使得抓屏程序无法正常使用。目前RPA的抓屏技术也向着和用户无交互,用户无感知的智能抓屏方向发展,即在后台运行抓屏程序自动抓取用户的业务操作,这对抓屏技术的时效性提出了更高的要求。同时现在的一些程序故意在窗口上做一些改动使得系统或程序API函数无法直接定位到窗口内的窗口元素,导致抓屏失败。故直接使用系统或程序API抓屏存在许多的问题。
[0004]针对上述的现有技术中存在的抓屏程序要获取其他程序窗口的信息需要进行跨进程的通信,尤其是面对复杂的程序窗口,会消耗大量时间,影响窗口元素抓取效率的技术问题,目前尚未提出有效的解决方案。

技术实现思路

[0005]本公开的实施例提供了一种窗口元素抓取方法、装置以及存储介质,以至少解决
现有技术中存在的抓屏程序要获取其他程序窗口的信息需要进行跨进程的通信,尤其是面对复杂的程序窗口,会消耗大量时间,影响窗口元素抓取效率的技术问题。
[0006]根据本公开实施例的一个方面,提供了一种窗口元素抓取方法,包括:响应于用户选择程序的第一触发操作,确定目标窗口应用程序;获取目标窗口应用程序包含的窗口元素,并根据窗口元素在内存中构建树形结构,其中树形结构中的节点与窗口元素在目标窗口应用程序中的排列相关并且包含窗口元素的结构信息;以及响应于用户选择抓取的目标窗口元素的第二触发操作,根据树形结构确定与目标窗口元素相关的窗口元素信息。
[0007]根据本公开实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
[0008]根据本公开实施例的另一个方面,还提供了一种窗口元素抓取装置,包括:窗口程序确定模块,用于响应于用户选择程序的第一触发操作,确定目标窗口应用程序;树形结构构建模块,用于获取目标窗口应用程序包含的窗口元素,并根据窗口元素在内存中构建树形结构,其中树形结构中的节点与窗口元素在目标窗口应用程序中的排列相关并且包含窗口元素的结构信息;以及窗口信息抓取模块,用于响应于用户选择抓取的目标窗口元素的第二触发操作,根据树形结构确定与目标窗口元素相关的窗口元素信息。
[0009]根据本公开实施例的另一个方面,还提供了一种窗口元素抓取装置,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:响应于用户选择程序的第一触发操作,确定目标窗口应用程序;获取目标窗口应用程序包含的窗口元素,并根据窗口元素在内存中构建树形结构,其中树形结构中的节点与窗口元素在目标窗口应用程序中的排列相关并且包含窗口元素的结构信息;以及响应于用户选择抓取的目标窗口元素的第二触发操作,根据树形结构确定与目标窗口元素相关的窗口元素信息。
[0010]在本公开实施例中,在进行窗口元素的抓取的过程中,首先获取待抓取的目标窗口应用程序中的窗口元素,并在内存中根据窗口元素构建树形结构。在用户选择待抓取的窗口元素时,可以从该树形结构中获取抓取的窗口元素的窗口元素信息。因此,在用户操作选择窗口元素的同时可以同时抓取窗口元素信息,相当于用户操作窗口应用程序和抓取的过程在同一个进程中进行。与现有技术中抓屏程序要获取其他程序窗口的信息需要进行跨进程的通信相比,本方案只需要在内存中的树形结构获取窗口信息,不需要进行跨进程操作。因此可以达到提升窗口元素抓取效率的技术效果。此外,树形结构是根据窗口元素而创建的,因此即使面对复杂的窗口元素,本方案也可以快速地进行窗口元素抓取。进而解决了现有技术中存在的抓屏程序要获取其他程序窗口的信息需要进行跨进程的通信,尤其是面对复杂的程序窗口,会消耗大量时间,影响窗口元素抓取效率的技术问题。
附图说明
[0011]此处所说明的附图用来提供对本公开的进一步理解,构成本申请的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
[0012]图1是用于实现根据本公开实施例1所述的方法的计算设备的硬件结构框图;
[0013]图2是根据本公开实施例1的第一个方面所述的窗口元素抓取方法的流程示意图;
[0014]图3示意性地示出了本公开实施例1窗口元素结构的示意图;
[0015]图4是根据本公开实施例1所述的窗口元素抓取的整体流程示意图;
[0016]图5是根据本公开实施例1所述的构建树形结构的过程示意图;
[0017]图6a是根据本公开实施例1所述的元素抓取的程序实现过程示意图;
[0018]图6b是根据本公开实施例1所述的树形结构构建的程序实现过程示意图;
[0019]图7是根据本公开实施例2所述的窗口元素抓取装置的示意图;以及
[0020]图8是根据本公开实施例3所述的窗口元素抓取装置的示意图。
具体实施方式
[0021]为了使本
的人员更好地理解本公开的技术方案,下面将结合本公开实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种窗口元素抓取方法,其特征在于,包括:响应于用户选择程序的第一触发操作,确定目标窗口应用程序;获取所述目标窗口应用程序包含的窗口元素,并根据所述窗口元素在内存中构建树形结构,其中所述树形结构中的节点与所述窗口元素在所述目标窗口应用程序中的排列相关并且包含所述窗口元素的结构信息;以及响应于所述用户选择抓取的目标窗口元素的第二触发操作,根据所述树形结构确定与所述目标窗口元素相关的窗口元素信息。2.根据权利要求1所述的方法,其特征在于,所述窗口元素包括主窗口元素和至少一级子窗口元素,并且根据所述窗口元素在内存中构建树形结构,包括:根据所述主窗口元素在内存中构建所述树形结构的根节点;根据所述至少一级子窗口元素在内存中构建所述树形结构的子节点;以及根据所述根节点和所述子节点以及主窗口元素和至少一级子窗口元素在所述目标窗口应用程序中的排列构建所述树形结构。3.根据权利要求2所述的方法,其特征在于,所述窗口元素的结构信息包括以下至少一项:所述窗口元素的元素信息、运行ID、外包矩形、父节点指针、子节点指针。4.根据权利要求3所述的方法,其特征在于,根据所述主窗口元素在内存中构建所述树形结构的根节点,包括:在内存中构建所述树形结构的根节点;获取与所述主窗口元素对应的句柄并根据所述句柄获取所述主窗口元素的可访问对象,根据所述可访问对象获取与所述主窗口元素对应的元素信息;确定所述主窗口元素的运行ID和外包矩形,并设置所述主窗口元素的父节点指针为空,设置所述主窗口元素的子节点指针为第一级子窗口元素;将与所述主窗口对应的元素信息、运行ID、外包矩形、父节点指针为空、子节点指针为第一级子窗口元素作为所述根节点的结构信息。5.根据权利要求4所述的方法,其特征在于,还包括:为所述根节点和所述主窗口元素的可访问对象分配一个线程,并将所述根节点和所述主窗口元素的可访问对象放入与所述线程对应的第一队列中,并且该分配一个线程并确定与所述线程对应的第一队列,并且根据所述至少一级子窗口元素在内存中构建所述树形结构的子节点,包括:通过所述线程,根据所述第一队列中的所述主窗口元素的可访问对象获取所述第一级子窗口元素的可访问对象,并根据所述第一级子窗口元素的可访问对象构建...

【专利技术属性】
技术研发人员:杨浩魏星周长安夏溧牟焱文
申请(专利权)人:北京中关村科金技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1