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

文档序号:35052398发布日期:2023-08-06 05:15阅读:19来源:国知局
本申请属于计算机,具体涉及一种rpa场景下java应用程序的元素抓取方法。
背景技术
::1、rpa即机器人流程自动化(robotic process automation)是以软件机器人和人工智能为基础的业务过程自动化科技,通过模仿用户在电脑的手动操作方式,利用机器人按照预设设计的流程执行工作信息与业务交互,可以在任务繁琐的情况下,高效解决复杂的流程,达到节约人工成本的目的。基础的工具型rpa由控制器、编辑器及运行器组成。应用场景包括财务会计、人力资源、采购、供应链管理等。2、rpa想要实现与应用程序的各个窗口、按钮、下拉列表等不同元素间的交互,需要先定位元素的位置,包括元素在屏幕上的坐标位置,以及在整个应用程序中的结构位置。然后再获取元素信息,才能对元素进行相应的操作。所以元素抓取方法是rpa技术的基础。3、现有技术可以通过java access bridge(jab)技术实现java应用程序的元素抓取,包括元素的位置信息、属性信息以及结构信息等。jab是一项在microsoft windows动态链接库(dll)中公开java accessibility api的技术。搭建rpa流程过程中,面对java应用程序中的复杂元素,如pycharm开发软件元素,在抓取table类型内部元素和list类型内部元素时存在抓取失败的情况,而获取元素信息和操作元素通常需要耗时3~5秒左右,因此基于jab的元素抓取无论在抓取精度还是在抓取效率上,都存在相当大的不足。在正式上限后,rpa存在执行效率低下的问题,在面对数据量较大的业务场景时,需要部署更多的机器人,大大提高了rpa的部署成本。技术实现思路1、针对现有技术的不足,本发明提出了一种rpa场景下java应用程序的元素抓取方法,通过ui树遍历优化,提高了java应用程序的元素抓取精度与效率,降低pra部署成本。2、一种rpa场景下java应用程序的元素抓取方法,具体包括:3、安装java access bridge,与java虚拟机元素进行通信。注册全局鼠标钩子事件,实时获取鼠标位置。通过win32用户接口,获取当前鼠标所在位置的窗口句柄,通过句柄及相关进程信息判断应用类型。当鼠标所在位置为java应用程序时,通过java accessbridge接口,查找ui结构树,通过父子关系和鼠标位置,采用递归算法倒序检索元素,获取元素信息。等到完成捕获时,再填充当前元素和所有父元素的信息。4、所述检索元素的过程为:对于java应用程序窗口,获取其顶层元素句柄,然后再获取元素信息,包括元素的名称、类型和边框。当不包含鼠标当前坐标时,说明鼠标不在该元素上,结束元素抓取,否则进一步判断是否存在子元素。当不含有子元素时结束抓取,否则获取面积最小的句柄及其元素信息,并判断是否包含当前坐标。5、本发明具有以下有益效果:6、本方法可以对java应用程序中的元素进行抓取,通过递归遍历的方法遍历方法查找元素,将坐标包含与面积比较作为判定条件,可以快速过滤元素,当捕获到目标元素后,再对整个ui链条进行填充,有效减少内存开销,在抓取精度方面得到了进一步提高,可以获得更深层级元素信息。并且,本方法还可以在1秒内完成针对各种元素的抓取动作和对单一元素的操作动作,极大提高了抓取效率。技术特征:1.一种rpa场景下java应用程序的元素抓取方法,安装java access bridge与java虚拟机元素进行通信,其特征在于:首先注册全局鼠标钩子事件,实时获取鼠标位置;通过win32用户接口,获取当前鼠标所在位置的窗口句柄,通过句柄及相关进程信息判断应用类型;当鼠标所在位置为java应用程序时,通过java access bridge接口,查找ui结构树,通过父子关系和鼠标位置,采用递归算法倒序检索元素,获取元素信息;捕获到目标元素时,再填充当前元素和所有父元素的信息。2.如权利要求1所述一种rpa场景下java应用程序的元素抓取方法,其特征在于:所述元素检索过程为:获取java应用程序窗口顶层元素句柄与元素信息,包括元素的名称、类型和边框;当元素不包含鼠标当前坐标时,结束元素抓取,否则进一步判断是否存在子元素;当不含有子元素时结束抓取,否则获取面积最小的句柄及其元素信息,并判断是否包含当前坐标。3.如权利要求1所述一种rpa场景下java应用程序的元素抓取方法,其特征在于:通过win32函数获取获取鼠标当前位置所在的窗口句柄。4.如权利要求1所述一种rpa场景下java应用程序的元素抓取方法,其特征在于:使用java access bridge提供的接口isjavawindow,判断鼠标当前位置是否为java程序窗口。5.如权利要求1所述一种rpa场景下java应用程序的元素抓取方法,其特征在于:使用接口getaccessiblecontextfromhwnd获取java虚拟机id和java对象句柄,再使用接口getaccessiblecontextinfo获取对应的元素信息。6.如权利要求1所述一种rpa场景下java应用程序的元素抓取方法,其特征在于:使用接口getaccessiblechildfromcontext查找当前元素的子元素。7.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1~6中任一项所述的方法。技术总结本发明公开了一种RPA场景下Java应用程序的元素抓取方法。该方法首先通过Win32用户接口获取鼠标所在位置的窗口句柄,判断应用类型,针对Java应用程序使用JAB接口查找UI结构树,并采用递归算法倒序检索,获取元素信息。通过当前位置判定,结合元素面积比较,快速过滤元素。成功抓取到目标元素后,再将当前元素与所有父元素的信息进行填充,得到完成的UI链条,从而有效减少内存开销。本方法能够在1秒内完成针对元素的抓取动作或操作动作,极大提高了效率,且实验证明本方法能够实现全场景覆盖,对各种不同类型的元素都能够成功抓取。技术研发人员:胡柳明,杨尚仑,苏凯,段廷瑞,何坤键受保护的技术使用者:杭州展鸿科技有限公司技术研发日:技术公布日:2024/1/14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1