4 无目标命令
在上一章中,我们讲述了“界面元素”,以及如何选取一个界面元素作为目标,以便使用“有目标命令”。当然,并非在所有的情况下,都能准确到恰当的界面元素作为目标。因此,我们需要学会使用“无目标命令”,以备不时之需。
4.1 为什么没有目标?
在上一章中提到,我们在查、操作界面元素的时候,实际上都是在调用界面元素所在的软件给我们提供的接口。UiBot所做的,实际上是把这些不同种类的接口统一起来,让编写流程的人不需要关注这些细节。但是,仍然会有一些软件,没有给我们提供查、操作界面元素的接口;或者虽然提供了接口,但在最终发布时关闭了,这些软件包括:
∙虚拟机和远程桌面
包含Citrix、VMWare、Hyper-V、VirtualBox、远程桌面(RDP)、各种安卓模拟器(如靠谱助手)等。这些程序都由单独的操作系统在运行,和UiBot所在的操作系统是完全隔离的,UiBot自然无法操作另一个操作系统里面的界面元素。安卓app开发用什么框架
当然,如果条件允许的话,可以把UiBot和流程涉及到的软件,都安装在虚拟机里,或者远程计算机里。这样一来,这些软件提供的接口就可以被UiBot直接使用了,因为它们还是运行在同一个操作系统里面的,本地计算机只是起到了一个显示器的作用而已。
∙基于DirectUI的软件
以前,Windows软件界面的开发框架都是微软提供的,包括MFC、WTL、WinForm、WPF等。微软很贴心的为这些框架制作出来的界面都提供了自动化操作的接口。近年来,为了让软件界面更好看,也更容易制作,很多厂商或开发团队推出了自己的Windows软件界面开发框架。这类框架统称为DirectUI。用这些框架制作的界面,其界面元素都是“画”出来的,虽然人眼可以看到,但操作系统和其他程序都不知道界面元素到底在哪里。有的DirectUI框架提供了对外的接口,可以到界面元素,有的则根本没有提供这样的接口,其它程序,包括UiBot,自然也无法到界面元素。
实际上,UiBot Creator、UiBot Worker本身的界面就是用一种DirectUI框架开发的,这种框架称为electron。electron其实提供了界面元素的查接口,但对外发布的版本默认都关闭了。所以,细心的读者可能会发现,UiBot里面的界面元素,反而是市面上任何RPA平台,
包括UiBot自己,都无法到的。
还有一个我们常用的基于DirectUI的软件,就是的Windows客户端。由于腾讯并未对外透漏,我们无法得知的Windows客户端使用了哪种DirectUI框架。但事实表明,这种框架并未提供界面元素的接口,所以,目前市面上除了UiBot之外的任何RPA平台都无法到其界面元素。只有UiBot针对的Windows客户端,采用了计算机视觉技术,能识别其中的界面元素。
∙游戏
由于游戏的界面强调美观和个性化,所以,一般游戏的界面元素都是“画”出来的,原理上和DirectUI类似。这种界面通常也没有提供接口,告知我们界面元素的位置。和基于DirectUI的软件不同的是,游戏界面变化速度快,对时效性的要求更高,一般来说,RPA平台并未针对游戏进行优化,所以在游戏上使用的效果不会太好。
如果要在游戏上使用自动操作,推荐使用按键精灵。按键精灵是专门为游戏设计的,内置了很多针对游戏的界面查手段,比如单点颜比对、多点颜比对、图像查等等。且运行效率更高。
4.2 无目标命令
我们在上一章中介绍了“有目标”的命令,相对的,UiBot也有“无目标”的命令。如下图所示,红框中表示有目标的命令,蓝框中表示无目标的命令。
有目标和无目标的命令
如果遇到了没有目标的Windows软件,“有目标命令”自然就不能再用了,但仍然可以用“无目标命令”。 在图中这些无目标的命令里面,最重要的是“模拟移动”,因为“模拟移动”需要我们在命令中指定一个坐标点,在执行这条命令的时候,鼠标指针也会移动到这个坐标点;移动之后,我们再使用“模拟点击”命令,模拟按下左键,才能正确的按下某个按钮;或者正确的在某个输入框上设置焦点,之后,再使用“输入文本”命令,才能在焦点所在的输入框里面输入一段文本。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论