自适应位置控制,位置控制程序编程

首页 > 体育 > 作者:YD1662023-11-16 19:23:05

自适应位置控制,位置控制程序编程(1)

什么是RPA?RPA(Robotic Process Automation,机器人流程自动化)是通过特定的、可模拟人类在计算机界面上进行操作的技术,它可以按规则自动执行相应的流程任务,代替或辅助人类完成相关的计算机操作,从而节约人力成本,提高生产效率。

从RPA的定义就可以看出,对计算机界面的操控是RPA的核心之一。要实现对计算机界面的操控,就必须用到RPA界面元素定位和操控技术。


元素定位与操控技术

界面元素是指用于构建系统或应用程序的所有图形用户界面部分,例如窗口、输入框、按钮等。通过显示器、键盘、鼠标等计算机外部设备,人能够实现在指定输入框输入文本、点击指定按钮等操作,和操作系统以及业务系统进行交互。同样的,RPA要代替人完成这些操作,就需要能够定位和操控这些界面元素。

界面元素定位与操控方法有很多,主要区别在于是否使用GUI(Graphical User Interface, 图形用户接口)自动化技术。非GUI自动化技术有:绝对坐标定位、图像匹配定位、基于消息操作、模拟键鼠操作等。GUI自动化技术有:Win32、MSAA、UIA、JAB、SAP、Citrix Virtual Channel、RDP Virtual Channel、Selenium、Chrome Extension等。通常来说,GUI自动化技术能获取到的界面元素的信息更多,支持的操作也更多,但同时局限性也更大,一种GUI自动化技术往往只支持几个界面元素框架,实际使用起来也会更困难。

下面列举几种常用的自动化技术并给出优缺点分析。


01 绝对坐标定位

绝对坐标,是指屏幕中固定的坐标位置,当界面元素总是处于屏幕中固定坐标位置时,就可以使用绝对坐标来进行定位。这个方法非常简单方便,在特定场景下非常好用。但是一般要求屏幕分辨率和应用窗口大小固定,而且无法保证定位到的界面元素是否正确。


02 图像匹配定位

图像匹配,在待匹配图像中寻找与目标图像相似性高的单个或多个目标,并获取目标的坐标位置。图像匹配可以和绝对坐标定位相结合,先使用绝对坐标定位,再用图像匹配做校验;也可以先划定屏幕中的某个区域,在此区域内进行图像匹配,以达到提高准确率、加速匹配过程的目的。


图像匹配的方法非常多,模板匹配使用空间二维滑动模板进行匹配,将目标图像在待匹配图像中滑动;特征匹配提取图像的特征,再生成特征描述子,最后根据描述子的相似程度对两幅图像的特征之间进行匹配;深度学习也可用于图像匹配之中,例如,使用OCR技术可以定位到包含指定文本的图像。


03 基于消息操作

这里的消息指的是操作系统的消息。Windows 是一个消息驱动的系统,Windows的消息提供了应用程序之间、应用程序与Windows 系统之间进行通信的手段。通过对应用程序窗口发送特定的消息,可以实现对指定界面元素的点击输入等操作。

自适应位置控制,位置控制程序编程(2)

图1 Windows消息机制


04 模拟键鼠操作

模拟键鼠可分为消息模拟、API模拟、驱动模拟三种。消息模拟基于windows的消息机制,向目标窗口发送键鼠消息。API模拟就是用Windows提供的API实现模拟输入。驱动模拟就是通过驱动程序,在系统内核里面操作I/O端口,给连接键盘的集成电路发送指令,让它产生一个按下按键的信息,这样你的模拟输入对于所有程序来说就是从一个真实的设备发出的。


05 Win32 API

Win32 API是微软第一代应用程序可访问API。Win32 API出现在.NET之前,是底层的Windows API。它支持MFC、VB6、VCL、简单的WinForms等窗体。

Win32自动化技术基于HWND(窗口句柄),一般需要通过 FindWindow、 EnumWindows 来查找目标窗口的句柄,然后再调用其它 API,例如 GetWindowText、GetWindowRect等来获取窗口属性,以此来定位目标元素。定位到目标元素之后,可以通过Win32 API实现对目标元素的操控。例如使用SetWindowText来设置显示的文字,使用SetActiveWindow来激活窗口等。


优点

缺点


06 MSAA

MSAA(Microsoft Active Accessibility)是微软第二代应用程序可访问API。MSAA旨在帮助辅助技术产品与应用程序(或操作系统)的标准和自定义用户界面元素进行交互。它支持WFC、VB6、VCL、WinForms、WPF等窗体。

MSAA 主要基于 COM 技术。提供信息的应用程序被称为 Server;获取信息的应用程序被称为Client。首先Client调用AccessibleObjectFromWindow传入Server窗口的HWND。

然后AccessibleObjectFromWindow函数向Server发送WM_GETOBJECT消息。Server创建并实现了IAccessible,之后通过LresultFromObject 把IAccessible 返回给Client。最后Client调用IAccessible定位和操作Server中的界面元素。

优点

缺点


07 UIA

UIA(Microsoft Active Accessibility)是用于替代MSAA的应用程序可访问技术。和MSAA不同,UIA技术的初衷是提供UI的可访问性。它支持MFC、WinForms、WPF、Store apps、Qt等窗体。


UIA定义了全新的、针对UI自动化的接口和模式。分别是支持对界面元素进行遍历和条件化查询的TreeWalker和FindAll。定义了读写UI元素属性的UIA Property, 包括Name、 ID、Type、ClassName、Location、 Visibility等等。定义了UI元素行为的UIA Pattern, 比如Select、Expand、Resize、 Check、Value等等。还引入了UIA Event接口,可以让测试程序在某些事件发生后得到通知,比如新窗口打开事件等。

自适应位置控制,位置控制程序编程(3)

图2 UIA架构图

优点


缺点


08 JAB

JAB(JAVA Access Bridge)是一项在Microsoft Windows动态链接库(DLL)中公开Java Accessibility API的技术,使实现Java Accessibility API的 Java应用程序对Windows系统上的辅助技术可见。

要使用JAB技术,需要在启动Java程序前配置好所需的JAB环境。Client需要事先加载WindowsAccessBridge.dll获取Server提供的接口,通过FindWindow获取窗口句柄,用IsJavaWindow来判断筛选出Java程序的窗口。拿到窗口后,可以根据窗口句柄获取虚拟机编号vmID 和根节点ac。之后就可以使用vmID和ac,通过之前Server提供的接口,来获取子节点界面元素的vmID和ac、获取界面元素的信息、以及调用界面元素支持的点击输入等方法。

JAB技术的初衷也是为了方便残疾人使用,因此对自动化技术的支持并不好。


自适应位置控制,位置控制程序编程(4)

首页 123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 m.360kss.com., All Rights Reserved.