本发明涉及桌面控件拾取和定位方法,尤其涉及用于rpa系统的桌面控件拾取和定位方法,属于自动化软件测试。
背景技术:
1、目前,流程自动化软件的创建流程部分需要对windows操作系统的桌面控件进行拾取和定位,通过拾取控件后定位控件,对相应控件进行一系列自动化操作,传统的定位和拾取桌面控件方法一般通过uispy(窗口捕捉工具)实现,uispy是microsoft(微软)提供的一个windows操作系统应用程序,uispy可以对桌面控件进行定位并获取控件信息,底层逻辑为通过win32gui库(图形用户界面网关)调用相应接口获取并高亮用户界面控件,即首先获取桌面控件操作句柄,其次捕获控件信息,再次通过rectangle绘制矩形框指令在桌面控件四周绘制矩形框,最后将控件信息输出到前台流程设计器中,实现可视化高亮桌面控件的操作;但现有技术中的窗口捕捉工具一般为独立程序,不提供接入接口,难以集成到大规模自动化系统,并且操作过程复杂,流程不清晰,定位能力单一,只能作为简单的测试软件配合使用,无法作为规模化rpa(机器人流程自动化)系统的组件。
2、综上所述,需要一种主动提供接口的、操作流程简洁的、拾取结果准确性高的桌面控件拾取和定位方法。
技术实现思路
1、在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
2、鉴于此,为解决现有技术中传统的桌面控件拾取和定位方法无法集成于rpa系统的问题,本发明提供用于rpa系统的桌面控件拾取和定位方法。
3、技术方案如下:用于rpa系统的桌面控件拾取和定位方法,包括以下步骤:
4、s1.构建拾取器websocket接口和定位器websocket接口,rpa系统的前台流程设计器通过与拾取器websocket接口和定位器websocket接口的连接实现对拾取器和定位器的调用;
5、s2.前台流程设计器调用拾取器,采用监听鼠标和键盘的方式采集用户操作,通过win32gui库实时绘制桌面控件的高亮矩形框,当鼠标位置下桌面控件存在变化时,刷新高亮矩形框获取控件信息并回显给前台流程设计器;
6、s3.前台流程设计器调用定位器,采用桌面控件定位方式、控件截图定位方式和拾取时的坐标定位方式依次获取桌面控件及其对应控件信息,直至成功匹配拾取器获取的控件信息,计算出桌面控件的中心坐标回显给前台流程设计器。
7、进一步地,所述s1中,构建拾取器websocket接口具体步骤如下:通过class类定义公开访问的服务端pickersocketserver,通过session函数建立与客户端的私有的连接会话,当连接状态openflag为true时,判断连接成功,当连接状态openflag为false时,判断连接失败,连接状态openflag通过log.info函数输出到服务端pickersocketserver,通过@param注解标注客户端向服务端发送的消息message,采用onmessage指令监听消息message,当客户端与服务端发送消息时,将通过log.info函数回调消息message,验证消息message中的参数,参数以chromepickerstart:开头时,代表启动拾取器;
8、构建定位器websocket接口具体步骤如下:通过class类定义公开访问的服务端locatorsocketserver,通过session函数建立与客户端的私有的连接会话,当连接状态openflag为true时,判断连接成功,当连接状态openflag为false时,判断连接失败,连接状态openflag通过log.info函数输出到服务端locatorsocketserver,通过@param注解标注客户端向服务端发送的消息message,采用onmessage指令监听消息message,当客户端与服务端发送消息时,将通过log.info函数回调消息message,验证消息message中的参数,参数以chromelocatorstart:开头时,代表启动定位器。
9、进一步地,所述s2中,通过start函数启动键盘监听keyboard_listener和鼠标监听mouse_listener,当按下键盘的esc键时表示中断拾取,停止鼠标监听mouse_listener,刷新当前通过win32gui库绘制的高亮矩形框,即去除高亮矩形框,将中断拾取信息返回给调用方;
10、当按下键盘的左ctrl键时拾取当前桌面控件并记录拾取时的坐标,停止鼠标监听mouse_listener,刷新当前通过win32gui库绘制的高亮矩形框,即去除高亮矩形框,截图标识screen_flag为true,进行截图并记录截图区域上下左右的坐标作为截图位置,终止拾取;
11、所述键盘监听keyboard_listener具体流程如下:进行截图时,通过用户身份uid构造截图名称,并构造截图区域进行截图,构造返回参数即截图位置,将返回参数输出到前台流程设计器;
12、所述鼠标监听mouse_listener具体流程如下:获取当前鼠标坐标下的uiautomation库的全局com对象,根据全局com对象获取uiaelement类,获取ui自动化元素的基本包装wrapper类,如果缓存对象比较当前wrapper类存在变化即鼠标位置下桌面控件存在变化,基于win32gui库通过redraw重新绘制指令刷新高亮矩形框,并通过wrapper类获取刷新后的当前高亮矩形框,同时更新对应桌面控件,绘制桌面控件四周的高亮矩形框,得到高亮矩形框坐标。
13、进一步地,所述s3中,桌面控件定位方式具体流程如下:获取拾取器得到的控件信息,对其进行格式化,得到桌面控件的坐标,通过classname类获取桌面控件,即由app类生成高亮矩形框的边界获取桌面控件,如果成功获取且上述桌面控件对应的控件信息与拾取器获取的控件信息匹配,则根据高亮矩形框坐标计算出桌面控件的中心坐标并输出到前台流程设计器,如果未成功匹配,则执行控件截图定位方式;
14、所述控件截图定位方式具体流程如下:在当前桌面中调用pyautogui库通过locateon指令查找截图位置获取桌面控件,如果成功获取且上述桌面控件对应的控件信息与拾取器获取的控件信息匹配,则根据截图位置计算出桌面控件的中心坐标并输出到前台流程设计器,如果未成功匹配,则执行拾取时的坐标定位方式;
15、所述拾取时的坐标定位方式具体流程如下:根据拾取时的坐标计算出桌面控件的中心坐标并输出到前台流程设计器。
16、本发明的有益效果如下:本发明为大规模rpa系统的集成提供了支持,将rpa系统的前台流程设计器通过连接拾取器websocket接口和定位器websocket接口,集成拾取器和定位器,实现对拾取器和定位器的唤起以及数据交互;本发明只需要导入程序包对接接口,即可使rpa系统获得拾取和定位桌面控件的能力,对比现有技术抽象的操作流程,本发明优化了流程,用户可以任意移动鼠标选取当前高亮桌面控件的相关信息,以便之后自动化流程中的桌面控件定位,且本发明的定位器通过桌面控件定位方式、控件截图定位方式和拾取时的坐标定位方式进行控件信息准确性验证,对拾取器获取结果提供了高可信度的可用支持。
1.用于rpa系统的桌面控件拾取和定位方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的用于rpa系统的桌面控件拾取和定位方法,其特征在于,所述s1中,构建拾取器websocket接口具体步骤如下:通过class类定义公开访问的服务端pickersocketserver,通过session函数建立与客户端的私有的连接会话,当连接状态openflag为true时,判断连接成功,当连接状态openflag为false时,判断连接失败,连接状态openflag通过log.info函数输出到服务端pickersocketserver,通过@param注解标注客户端向服务端发送的消息message,采用onmessage指令监听消息message,当客户端与服务端发送消息时,将通过log.info函数回调消息message,验证消息message中的参数,参数以chromepickerstart:开头时,代表启动拾取器;
3.根据权利要求2所述的用于rpa系统的桌面控件拾取和定位方法,其特征在于,所述s2中,通过start函数启动键盘监听keyboard_listener和鼠标监听mouse_listener,当按下键盘的esc键时表示中断拾取,停止鼠标监听mouse_listener,刷新当前通过win32gui库绘制的高亮矩形框,即去除高亮矩形框,将中断拾取信息返回给调用方;
4.根据权利要求3所述的用于rpa系统的桌面控件拾取和定位方法,其特征在于,所述s3中,桌面控件定位方式具体流程如下:获取拾取器得到的控件信息,对其进行格式化,得到桌面控件的坐标,通过classname类获取桌面控件,即由app类生成高亮矩形框的边界获取桌面控件,如果成功获取且上述桌面控件对应的控件信息与拾取器获取的控件信息匹配,则根据高亮矩形框坐标计算出桌面控件的中心坐标并输出到前台流程设计器,如果未成功匹配,则执行控件截图定位方式;
