一种RPA场景下Java应用程序的元素抓取方法技术

技术编号:38413461 阅读:9 留言:0更新日期:2023-08-07 11:18
本发明专利技术公开了一种RPA场景下Java应用程序的元素抓取方法。该方法首先通过Win32用户接口获取鼠标所在位置的窗口句柄,判断应用类型,针对Java应用程序使用JAB接口查找UI结构树,并采用递归算法倒序检索,获取元素信息。通过当前位置判定,结合元素面积比较,快速过滤元素。成功抓取到目标元素后,再将当前元素与所有父元素的信息进行填充,得到完成的UI链条,从而有效减少内存开销。本方法能够在1秒内完成针对元素的抓取动作或操作动作,极大提高了效率,且实验证明本方法能够实现全场景覆盖,对各种不同类型的元素都能够成功抓取。对各种不同类型的元素都能够成功抓取。对各种不同类型的元素都能够成功抓取。

【技术实现步骤摘要】
一种RPA场景下Java应用程序的元素抓取方法


[0001]本申请属于计算机
,具体涉及一种RPA场景下Java应用程序的元素抓取方法。

技术介绍

[0002]RPA即机器人流程自动化(Robotic process automation)是以软件机器人和人工智能为基础的业务过程自动化科技,通过模仿用户在电脑的手动操作方式,利用机器人按照预设设计的流程执行工作信息与业务交互,可以在任务繁琐的情况下,高效解决复杂的流程,达到节约人工成本的目的。基础的工具型RPA由控制器、编辑器及运行器组成。应用场景包括财务会计、人力资源、采购、供应链管理等。
[0003]RPA想要实现与应用程序的各个窗口、按钮、下拉列表等不同元素间的交互,需要先定位元素的位置,包括元素在屏幕上的坐标位置,以及在整个应用程序中的结构位置。然后再获取元素信息,才能对元素进行相应的操作。所以元素抓取方法是RPA技术的基础。
[0004]现有技术可以通过Java Access Bridge(JAB)技术实现Java应用程序的元素抓取,包括元素的位置信息、属性信息以及结构信息等。JAB是一项在Microsoft Windows动态链接库(DLL)中公开Java Accessibility API的技术。搭建RPA流程过程中,面对Java应用程序中的复杂元素,如PyCharm开发软件元素,在抓取Table类型内部元素和List类型内部元素时存在抓取失败的情况,而获取元素信息和操作元素通常需要耗时3~5秒左右,因此基于JAB的元素抓取无论在抓取精度还是在抓取效率上,都存在相当大的不足。在正式上限后,RPA存在执行效率低下的问题,在面对数据量较大的业务场景时,需要部署更多的机器人,大大提高了RPA的部署成本。

技术实现思路

[0005]针对现有技术的不足,本专利技术提出了一种RPA场景下Java应用程序的元素抓取方法,通过UI树遍历优化,提高了Java应用程序的元素抓取精度与效率,降低PRA部署成本。
[0006]一种RPA场景下Java应用程序的元素抓取方法,具体包括:
[0007]安装Java Access Bridge,与Java虚拟机元素进行通信。注册全局鼠标钩子事件,实时获取鼠标位置。通过Win32用户接口,获取当前鼠标所在位置的窗口句柄,通过句柄及相关进程信息判断应用类型。当鼠标所在位置为Java应用程序时,通过Java Access Bridge接口,查找UI结构树,通过父子关系和鼠标位置,采用递归算法倒序检索元素,获取元素信息。等到完成捕获时,再填充当前元素和所有父元素的信息。
[0008]所述检索元素的过程为:对于Java应用程序窗口,获取其顶层元素句柄,然后再获取元素信息,包括元素的名称、类型和边框。当不包含鼠标当前坐标时,说明鼠标不在该元素上,结束元素抓取,否则进一步判断是否存在子元素。当不含有子元素时结束抓取,否则获取面积最小的句柄及其元素信息,并判断是否包含当前坐标。
[0009]本专利技术具有以下有益效果:
[0010]本方法可以对Java应用程序中的元素进行抓取,通过递归遍历的方法遍历方法查找元素,将坐标包含与面积比较作为判定条件,可以快速过滤元素,当捕获到目标元素后,再对整个UI链条进行填充,有效减少内存开销,在抓取精度方面得到了进一步提高,可以获得更深层级元素信息。并且,本方法还可以在1秒内完成针对各种元素的抓取动作和对单一元素的操作动作,极大提高了抓取效率。
附图说明
[0011]图1为本申请所述元素抓取方法的算法流程图;
[0012]图2为元素查找过程概念图;
[0013]图3为实施例中使用的第一个Java应用程序窗口;
[0014]图4为实施例中针对第一个Java应用程序窗口的元素抓取结果;
[0015]图5为实施例中使用的第二个Java应用程序窗口;
[0016]图6为实施例中针对第二个Java应用程序窗口的元素抓取结果;
[0017]图7为实施例中第二个Java应用程序窗口的UI结构树。
具体实施方式
[0018]以下结合附图对本专利技术作进一步的解释说明;
[0019]首先安装Java运行环境JRE,然后安装Java Access Bridge用于和Java虚拟机元素进行通信。再注册全局鼠标钩子事件,实时获取鼠标的位置。如图1所示,通过Win32函数获取获取鼠标当前位置所在的窗口句柄,再使用Java Access Bridge提供的接口(IsJavaWindow),判断鼠标当前位置是否为Java程序窗口,如果是,则使用接口(GetAccessibleContextFromHWND)获取java虚拟机ID和Java对象句柄。再使用接口(GetAccessibleContextInfo)获取元素信息。然后再使用接口(GetAccessibleChildFromContext)获取该元素的子元素。如果一个元素同时存在多个子元素都包含指定点位,则选择其中面积最小的一个子元素进行搜索,直到找到最后一个包含指定点位的元素,如图2所示。这是因为真正的有效子元素总是面积最小的那一个,直接通过面积比较的方式确定下一步的搜索目标,可以避免按顺序搜索所消耗的时间。
[0020]完成元素抓取后,再依次对UI树进行填充,因此只有当成功抓取时才会填充整个UI链条,避免资源浪费,有效减少内存开销,也提高了抓取速度。
[0021]首先使用本方法对图3所示的Java应用程序窗口进行元素抓取。将鼠标移动至点击按键“New Project”的位置。抓取结果如图4所示,其中加粗字体的节点表示遍历路径,方框中为抓取到的目标元素,在右侧显示其元素类型为“push button”,元素文本为“New Project”。
[0022]再使用本方法针对图5所示的Java应用程序窗口进行元素抓取。将鼠标移动至标签页“Study”的位置。抓取结果如图6所示,在右侧显示抓取到的元素类型为“label”,元素文本为“study”,表明抓取成功。对应的UI结构树如图7所示。
[0023]本方法在使用JAB接口查找UI结构树的基础上,采用递归算法倒序检索,获取元素信息,通过当前位置判定,结合元素面积比较,快速过滤元素。从抓取精度上来看,本方法可以实现全场景覆盖,对各种类型的元素都可以实现成功抓取;从抓取速度上来看,本方法可
以在80ms~200ms内完成元素抓取。因此,本方法无论是抓取精度还是抓取速度,都有极大的提高。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种RPA场景下Java应用程序的元素抓取方法,安装Java Access Bridge与Java虚拟机元素进行通信,其特征在于:首先注册全局鼠标钩子事件,实时获取鼠标位置;通过Win32用户接口,获取当前鼠标所在位置的窗口句柄,通过句柄及相关进程信息判断应用类型;当鼠标所在位置为Java应用程序时,通过Java Access Bridge接口,查找UI结构树,通过父子关系和鼠标位置,采用递归算法倒序检索元素,获取元素信息;捕获到目标元素时,再填充当前元素和所有父元素的信息。2.如权利要求1所述一种RPA场景下Java应用程序的元素抓取方法,其特征在于:所述元素检索过程为:获取Java应用程序窗口顶层元素句柄与元素信息,包括元素的名称、类型和边框;当元素不包含鼠标当前坐标时,结束元素抓取,否则进一步判断是否存在子元素;当不含有子元素时结束抓取,否则获取面积最小的句柄及其元素信息,并判断是否包含当前坐标。3.如权利要求1所述一种RPA场景下Java...

【专利技术属性】
技术研发人员:胡柳明杨尚仑苏凯段廷瑞何坤键
申请(专利权)人:杭州展鸿科技有限公司
类型:发明
国别省市:

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

1