UiPath Level 1-Lesson 8. Advanced Citrix Automation

学习大纲

  • 如何使自动化操作识别应用程序的不同状态
  • 如何使用Highlight活动
  • 如果在Citrix环境下打开某个应用程序

 

1. 识别应用程序的状态

对于基于图片的自动化,一个很容易被忽略的问题是,如何让程序知道在什么时候执行某个操作。比如等待某个应用程序或网页加载完成,或是等待某个进程结束。我们需要让UiPath知道应用程序的状态,以判断是否可以进行下一步操作。

实例:在Citrix环境下,打开SAP的主页并登陆账号。

分析:在本地电脑上可以直接使用录制工具,因为UiPath会等待元素加载完成才与之互动。但是Citirx环境相当于一张图片,UiPath无法直接访问Citrix上的各种元素。解决方法是,让UiPath模仿人是如何识别某个应用或者网页是否加载完成的。我们可以让UiPath寻找某个视觉元素,它可以表示应用或者网页的状态是完成加载的或者就绪的,比如等待某个图片或者按钮的出现。对于本例,最好的方法是等待网页标签上的加载图标消失,并被网站图标取代,这需要使用Find Image活动

方法:

1) 手动添加一个Find Image活动,选中加载完成后的网页图标。

*Find Image活动可以停止执行进程,直到特定的图片被找到或者等待超时。

2) 为了进行测试,添加一个Message Box活动,当图片找到时就会弹出提示。

3) 回到Google首页运行程序。结果是提示框弹出,这和预期的不同,因为我们并没有打开SAP主页。

4) 为了找出问题所在,我们可以使用Highlight活动。首先,设置Find Image活动的参数,使它输出一个UiElement类型的变量elmnt;接着在Find Image活动后面添加一个Highlight活动。

Highlight活动可以高亮标示某个裁剪区域、元素或者Selector。这里我们将参数Element指定为Find Image活动的输出变量,将参数Color改为红色,将参数Highlighting Time设置为200(即2秒)。

5) 运行程序,下图中的元素被标示出来了。为了使程序能正确识别网页的状态,我们可以去掉这个链接。重新运行程序,Message Box就不会弹出了。

6) 添加一个Click Image活动来点击登陆图标。

7) 在Log On窗口中,焦点默认落在User Name的文本框里。使用Tab键导航会比较便利。

8) 添加一个Type Into活动,输入Email Address + 一次Tab + Password + 三次Tab + 一次Enter。Email和Password都可以用变量替换。

思考:我们的程序可能会出现这样的问题,有时候Log In窗口还没有加载好,就已经开始进行Type Into的操作了,应该如何解决?

一个解决方案是在Click Image活动和Type Into活动之间添加一个延时。但是这不是最优的解法,因为总会有加载的时间比设置的延迟要长的情况。更多情况下加载的时间会比设置的延迟更短,这就不必要的拖慢了程序的运行速度。最好的解决方案还是添加Find Image活动


 

2. 打开Citrix上的应用程序

1) 双击应用程序的图标

添加Click Image活动,将ClickType参数改为双击。

然而这种方法并不稳定。比如,在图标被选中的情况下运行程序,由于图标的背景色发生了改变,UiPath将找不到这个图标。

解决方法是,可以在选取图标时不把背景色选进去。

 

2) 为应用程序指定快捷键

右键→属性→快捷键 (Shortcut Key)。设置的快捷键越复杂越好,以避免与已存在的快捷键冲突。

设置好快捷键后,添加一个Send Hotkey活动,并把它指定给Citrix窗口。

 

3) 运行命令

如果要求更高,比如需要在运行应用程序时添加一些参数,还可以使用Windows的运行(Run)命令。

实例:使用Notepad++打开text.txt文件。

思路

  • 找到Notepad++应用程序所在的路径:在快捷方式的属性里复制路径。
  • 按下Win键+R键,打开运行窗口。如果Citrix版本不支持发送Win键+R键,将Citrix窗口全屏后再输入就可以了。

在使用Win键+R键打开运行窗口时,我们打开的将会是本机的运行窗口而非远程电脑上的。

使用Remote-Desktop应用程序发送特殊指令。视频里的Ctrix版本无法发送Win键,但是可以打开开始菜单。

  

  打开开始菜单后,输入CMD将打开命令提示符(Command Prompt)。我们可以输入应用程序的路径或者其他低级命令,以实现一些很有用的功能。

    

  

方法

  • 添加一个Click活动点击最大化按钮。
  • 添加一个Send Hotkey活动发送Win键+R键。
  • 创建两个变量,变量app用来保存Notepad++的程序路径;变量args用来指定参数,此例中,参数为要打开的文本文件的路径。
  • 添加一个Type Into活动,输入app+" "+args,再发送一个回车键。
  • 如果需要,还可以添加一Click活动退出全屏。 

 


 

3. 练习

假设你在远程电脑上,通过双击打开某个应用程序的图标(注意考虑图标被选中和分辨率改变的情况)。

思路

当要找的图片有三四种可能性时,比较直接的方法是在Pick活动块里添加各种Pick Branch活动

方法

  • 添加一个Pick容器,并在其中添加三个Pick Branch活动。
  • 在第一个Pick Branch活动的Trigger区域里,添加Image Exists活动并截取目标图标。在Action区域添加Click Image活动
  • 选中目标图标,在第二个Pick Branch活动的Trigger区域里,添加Image Exists活动并截取图标。在Action区域添加Click Image活动
  • 更改屏幕分辨率,在第三个Pick Branch活动的Trigger区域里,添加Image Exists活动并截取图标。在Action区域添加Click Image活动
  • 这样一来,不论UiPath在屏幕里找到了三个图片中的哪一个,Click Image活动都将应用于对应的图片。


 

*本课使用的新活动、方法、函数等:

Send Hotkey

Click

Pick

Pick Branch

Image Exist:检查是否在指定的UI元素中找到了某个图像。参数Accuracy可以调整查找的相似度;最终输出一个布尔型变量。

posted @ 2018-11-06 16:08  韭菜也是有尊严的  阅读(3540)  评论(0编辑  收藏  举报