一种Linux平台UI元素拾取方法和系统技术方案

技术编号:39038197 阅读:12 留言:0更新日期:2023-10-10 11:51
本发明专利技术公开了一种Linux平台UI元素拾取方法和系统,属于机器人流程自动化(RPA)技术领域,首先获取鼠标位置、桌面UI元素、以及桌面最上层窗口及其窗口进程名;在桌面UI元素的子元素中查找最上层窗口进程名对应的元素;按照元素的包含范围,查找包含鼠标坐标的最小元素作为元素拾取结果输出。本发明专利技术通过获取最上面的窗口,然后在该窗口匹配元素,可防止未底层元素干扰元素拾取过程从而输出底层元素,造成RPA系统运行异常的问题。通过获取最上层窗口及其进程名来过滤无关进程,增加了元素拾取效率,缩短元素拾取时间。缩短元素拾取时间。缩短元素拾取时间。

【技术实现步骤摘要】
一种Linux平台UI元素拾取方法和系统


[0001]本专利技术涉及机器人流程自动化(Robotic Process Automation,简称RPA)
,具体地涉及一种Linux平台UI元素拾取方法和系统。

技术介绍

[0002]RPA系统的UI元素拾取和搜索是为了让RPA系统能知道在哪里或者输入,是RPA系统鼠标点击和键盘输入的前置模块。在Windows上,微软公司提供了UIA软件开发包,因此能较为容易的获取与搜索元素。在Mac平台上,苹果的辅助功能组件能通过一行代码获取鼠标下的UI元素,在Linux系统中,虽然系统也提供辅助功能组件,但是并不提供通过鼠标位置获取UI元素的接口。
[0003]基于Linux系统的UI元素拾取方法设计难点在于虽然linux的辅助功能组件提供基础UI元素类,但是该UI元素类并没有方法判断该元素是否在最上层,因此一旦桌面上有窗口的堆叠,通过辅助功能组件会获取多个元素,但是RPA系统希望获取最上面的UI元素。目前尚未有基于Linux平台的元素拾取方案。

技术实现思路

[0004]为了解决Linux平台下的UI元素拾取问题,本专利技术提出了一种Linux平台UI元素拾取方法和系统,使RPA系统在Linux系统上也能完成拾取UI元素的操作,在功能上与Windows、Mac平台一致。
[0005]为了实现上述目的,本专利技术采用如下技术方案:
[0006]第一方面,本专利技术提供了一种Linux平台UI元素拾取方法,包括以下步骤:
[0007]S1,获取鼠标位置;
[0008]S2,获取桌面UI元素;
[0009]S3,获取桌面最上层窗口及其窗口进程名;
[0010]S4,在桌面UI元素的子元素中查找最上层窗口进程名对应的元素;
[0011]S5,按照元素的包含范围,查找包含鼠标坐标的最小元素作为元素拾取结果输出。
[0012]进一步的,所述的鼠标位置为相对于屏幕左上角的位置。
[0013]进一步的,所述的桌面元素为所有UI元素的根节点。
[0014]进一步的,所述的步骤S3中,使用X11库获取当前激活的窗口,即最上层窗口。
[0015]进一步的,所述的步骤S3中,通过最上层窗口属性进程ID获取窗口进程名。
[0016]进一步的,所述的步骤S5具体为:
[0017]首先获取步骤S4查找到的元素的子元素集合,遍历所有子元素,判断鼠标坐标是否位于该子元素边界内,若否,则继续遍历其他子元素;若是,则判断该子元素是否还包含新的子元素,若包含,则继续遍历该子元素的子元素,直至鼠标坐标位于当前匹配的子元素边界内,且当前匹配的子元素不含新的子元素,将当前匹配的子元素作为返回结果。
[0018]第二方面,本专利技术提供了一种Linux平台UI元素拾取系统,包括:
[0019]数据采集模块,其用于获取鼠标位置、桌面UI元素、以及桌面最上层窗口及其窗口进程名;
[0020]元素筛选模块,其用于在桌面UI元素的子元素中查找最上层窗口进程名对应的元素;
[0021]范围遍历模块,其用于按照元素的包含范围,查找包含鼠标坐标的最小元素作为元素拾取结果输出。
[0022]本专利技术具有的有益效果是:
[0023]目前尚未有基于Linux平台的元素拾取方案,Linux平台虽然提供UI元素类,但是设计时并没有考虑UI元素堆叠顺序,无法获取最上面的UI元素,因此本方法引入X11库,首先获取最上面的窗口,然后在该窗口匹配元素,可防止底层元素干扰元素拾取过程从而输出底层元素,造成RPA系统运行异常的问题。
[0024]此外,本专利技术通过X11库获取最上层窗口并获取进程名来过滤无关进程,增加了元素拾取效率,缩短元素拾取时间。
附图说明
[0025]图1是Linux平台UI元素拾取方法的流程示意图;
[0026]图2是一项具体实施例。
具体实施方式
[0027]下面结合本申请具体实施例及相应的附图,对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0028]所谓的UI元素是指界面上的文本框、按钮等组件,拾取UI元素是获取鼠标下的UI元素。鼠标点击和键盘输入的RPA系统的核心功能之一,UI元素为RPA系统提供鼠标点击和键盘输入的位置,因此UI元素的拾取是RPA系统鼠标点击和键盘输入的基础组件。RPA系统通过元素拾取UI元素获取桌面上的UI元素并保存至元素库,在运行时则在桌面上搜索该元素并获取位置,为鼠标点击和键盘输入提供坐标。
[0029]在本实施例中,当通过鼠标选中UI界面中的某一选项时,该选项即为目标UI元素,所述的目标UI元素可以是UI界面中的任一可选元素,由用户提前定义。例如,本实施例的UI元素为某一文件窗口中的“主目录”按钮。
[0030]如图1所示,为了实现目标UI元素拾取,本专利技术的流程如下:
[0031]S1,获取鼠标位置;所述的鼠标位置为相对于屏幕左上角的位置。本实施例中,获得的鼠标位置为(336,143)。
[0032]S2,获取桌面UI元素,所述的桌面的UI元素是指通过linux平台提供的AT

SPI(辅助技术服务提供者接口)获取代表桌面的UI元素,即所有UI元素的根节点。
[0033]S3,获取桌面最上层窗口及其窗口进程名;所述的桌面最上层窗口是指使用X11库获取当前激活的窗口,X11库是Linux平台用于显示图像的系统,其为开发者提供了一系列图像显示的工具包与协议栈。获取窗口进程名是指首先获取窗口属性进程ID,然后根据窗
口ID获取进程名。本实施例中,得到的最上层窗口进程名为“dde

file

manager”。
[0034]S4,在桌面UI元素的子元素中查找最上层窗口进程名对应的元素,即通过鼠标选中UI界面中的某一选项对应的文件窗口;
[0035]S5,按照元素的包含范围查找包含鼠标坐标的最小元素,即,首先获取步骤S4查找到的元素的子元素集合,遍历所有子元素,判断鼠标坐标是否位于该子元素边界内,判断依据为获取子元素的边界框位置,若鼠标坐标在边界框内则鼠标坐标是否位于该子元素边界内,否则不是。若否,则继续遍历其他子元素;若是,则判断该子元素是否还包含新的子元素,若包含,则继续遍历该子元素的子元素,直至鼠标坐标位于当前匹配的子元素边界内,且当前匹配的子元素不含新的子元素,将当前匹配的子元素作为返回结果。
[0036]本实施例中,如图2所示,文件窗口包含名为“leftsidebar”类型子元素(最外层边框),“leftsidebar”类型子元素的边界包含鼠标坐标;以“leftsidebar”类型子元素作为当前元素,获取当前元素的子元素,“lef本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Linux平台UI元素拾取方法,其特征在于,包括以下步骤:S1,获取鼠标位置;S2,获取桌面UI元素;S3,获取桌面最上层窗口及其窗口进程名;S4,在桌面UI元素的子元素中查找最上层窗口进程名对应的元素;S5,按照元素的包含范围,查找包含鼠标坐标的最小元素作为元素拾取结果输出。2.根据去哪里要求1所述的一种Linux平台UI元素拾取方法,其特征在于,所述的鼠标位置为相对于屏幕左上角的位置。3.根据权利要求1所述的一种Linux平台UI元素拾取方法,其特征在于,所述的桌面元素为所有UI元素的根节点。4.根据权利要求1所述的一种Linux平台UI元素拾取方法,其特征在于,所述的步骤S3中,使用X11库获取当前激活的窗口,即最上层窗口。5.根据权利要求1所述的一种Linux平台UI元素拾取方法,其特征在于,所述的步骤S3中,通过最上层窗口属性进程ID获取窗口进程名。6.根据权利要求1所述的一种Linux平台UI元素拾取方法,其特征在于,所述的步骤S5具体为:首先获取步骤S4查找到的元素的子元素集合,遍历所有子元素,判断鼠标坐标是否位于该子元素边界内,若否,则继续遍历其他子元素;若是,则判断该子元素是否还包含新的子元素,若包含,则继续遍历该子元素的子元素,直至鼠标坐标位于当...

【专利技术属性】
技术研发人员:赵洲叶上维陈哲乾
申请(专利权)人:杭州一知智能科技有限公司
类型:发明
国别省市:

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

1