UiPath Level 1-Lesson 5. Advanced UI Interaction

学习大纲

  • 创建Input的三种方法和它们之间的不同
  • 如何使用Screen Scraping Wizard
  • 创建Output的三种方法和它们之间的不同
  • 如何使用Data Scraping Wizard

 

与UI的交互 (UI Interaction) 可以分为两种:Input和Output。

Input (输入):使应用程序做某件事。如鼠标单击、文本录入、键盘快捷键、鼠标右击、鼠标悬停等。

Output (输出):从应用程序中提取信息。获得文本,找到元素和图片,操作剪贴板等。

 

1. Input方法

Input方法  兼容性  运行速度 支持后台工作 支持Hotkeys 自动清空内容
Default 100% 50% X X
Window Messages 80% 50% X
Simulate Type/Click *70% 100% X

 

 

 

 

*Simulate Type/Click可以兼容99%的网页应用和60%的桌面应用程序

  • Default方法使用鼠标和键盘的驱动模拟人为使用。这种方法总是管用,但是运行速度慢,而且不可以在后台操作。
  • 可以先使用Default方法确保程序能正常运行,然后再修改为其他两种方法,看看是否能运行。
  • 如果不需要发送热键,推荐使用Simulate方法,因为它的速度最快,且支持后台运行。之后再考虑尝试Window Messages方法。
  • 可以在属性面板里选择使用那种Input方法。

实例验证:

  • 打开记事本,使用Basic进行录制。
  • 在记事本中输入一段较长的文本A (Type Into活动1),再输入另一段文本B (Type Into活动2),最小化记事本 (Click活动)。
  • 录制结束后,把Click活动拖到两个Type Into活动之间,以测试后台运行。
  • 在Type Info活动2里,手动添加一个热键Enter (点击右下角的下拉箭头选择热键),添加后显示为"[k(enter)]文本B"。

运行结果:

  • Default:文本A(换行)文本B
    速度较慢;最小化窗口之后又还原窗口,再输入文本B; 识别了[k(enter)]。
  • WindowMessages:文本a(换行)文本b
    速度最慢;最小化窗口后在后台输入文本B;识别了[k(enter)];大写字母都变成了小写
  • Simulate:[k(enter)]文本B
    速度最快;最小化窗口后再后台输入文本B;不能识别[k(enter)];虽然没有勾选Empty Filed选项,但是文本A在输入文本B时被清空了。
    解决方法:在第二个Type Info活动前添加Get Text活动提取文本A,再把文本B附在文本A的后面输入。

建议:每一种Input方法都试一下。先使用Default方法,因为它是一定可以运行的。之后再尝试使用SimulateWindowMessages方法来提高运行速度或者实现在后台工作。


 

2. Output方法:Screen Scraping

上一课用到的Get Text活动仅适合抓取简单短小的文本。而Screen Scraping可以抓取更大块的、存在于复杂元素中的文本。Screen Scraping还可以获取文本的位置、颜色等信息。

使用Screen Scraping工具抓取信息时可以尝试下面三种方法:

 Output方法  运行速度  准确度  支持后台工作 获取文本位置 获取隐藏文本 兼容Citrix
FullText
很快 100% X X
Native 较快 100% X X X
OCR 很慢 98% X X

 

 

 

 

  1) FullText是默认方法,大多数情况下也有是有效的方法。

  2) Native的优势是可以获取文字的其他信息,比如某个单词或字母在屏幕上的坐标。

  3) OCR不能达到100%的准确度,但当另外两种方法不起作用时,OCR就是最后手段。

  *只有OCR可以在Citrix或者虚拟环境下运行。OCR也可以获取文字位置。

 

怎样使用Screen Scraping:

  1) 点击Design Ribbon中的Screen Scraping按钮,会出现选取界面。

   

  2) 点击以选择想要提取的信息,可以选择包含多个元素的区域。

  

  3) 选取完会弹出Screen Scraper Wizard窗口。点击UI ElementRegion可以更改提取信息的区域。

  这里UiPath自动选择了Native方法,可以在Options面板中更改为其它两种方法。

  

  从预览面板中可以看出,Native方法只抓取了可编辑区域中的文本。

  4) 切换为Full Text方法后,预览面板中的信息发生了变化。

  Full Text方法不但抓取了可编辑区域的文本,还抓取了不可编辑区域的文本和隐藏在下拉列表中的文本。

  

  *在Options面板中勾选Ignore Hidden选项,再点Re-scrape按钮可以忽略隐藏的文本。

  

  5) OCR方法则更为不同,它把选择的区域看作图片来读取其中的文字。

  由于会出现错别字,OCR方法仅适用于数据不需要完全正确的情况。

  

  UiPath提供了两个OCR的引擎。MS Office OCR适用于较大的图片,比如扫描的文档。

   

  Google OCR更适合读取较小的、分辨率较低的图片,比如界面上的元素。

  

  Options面板中Invert选项专门针对一些黑底白字的图片。Scale选项则可以放大图片以得到更好的结果。

  我们可以逐个尝试这些选项,看看预览面板的结果有什么变化,找到最佳组合方式。

   6) 设置完点击右下角的Continue按钮,会得到一个Screen Scraping的Sequence。

  

  

  Selector表示要抓取文本的元素或区域,当多个活动的元素或区域相同时,可以将Selector里的内容直接复制到其他活动中而不必重新选择元素或区域。Text的变量用来保存抓取到的文本。

  如果想试试另一种OCR,可以把Google OCR活动删除,再把MS Office OCR活动拖进来。推荐把Scale属性改成3,因为MS Office OCR更适合读取较大的图片。

*如果不使用Screen Scraping,也可以手动添加活动。

Output方法 手动添加
Basic Recording Get Text
Full Text Get Full Text
Native Get Visible Text
OCR Get OCR Text

*Get Text活动在上例中只能抓取"Address"一个单词。 


3. Data Scraping

Screen Scraping用来抓取Freeform Data (自由形式的数据)。而Data Scraping用来抓取Structured Data (结构化数据)

Structured Data是什么?
当你在Google搜索某个关键词时,你得到的搜索结果是由很多块相同格式的数据构成的,每一块都由三部分构成:标题、URL和描述。这样的数据就是Structured Data

怎样使用Data Scraping:

以亚马逊的图书搜索页面为例,该页面上的数据也是Structured Data,但是比Google的搜索结果页面更为复杂。

  1) 点击Design Ribbon中的Web Scraping按钮,会出现向导窗口,点击Next就可以开始选取第一个元素了。

  

  

  

  2) 点击第一本书的标题,会再次弹出向导窗口。点击Next继续。

  

  

  3) 点击第二本书的标题,再次弹出向导窗口。图书的标题也是链接,因此向导窗口可以选择提取文本或URL。

  

  这里两个选项都勾选上,分别命名为Title和URL。点击Next按钮,弹出向导的预览界面。

  

  

  4) 除了提供预览的数据,网页上的相应位置被标出来方便查看。接着提取“作者”和“价格”,点击Extract Correlated Data按钮。

  

  

  5) 向导重新回到选择第一个元素时的界面,重复上面的步骤提取“作者”和“价格”信息。点击Finish按钮。

  6) UiPath会询问我们数据是否跨页。将网页下拉到选择页码的地方,选择Yes,然后选择网页上的Next Page元素。

  

  

  7) 向导结束后将得到一个名为Web Scraping的Sequence,并且得到一个DataTable类型的Output变量。

      添加一个Write CSV活动,将抓取的数据保存在一个CSV文件里。

  8) 这个CSV文件里有100条记录,但搜索结果远超100条。这是因为UiPath默认只抓取100条记录,可以在属性面板里更改设置。

  

用Web Scraping抓取网页上的表格 (HTML Table) 是,当点击表格里的任意一个单元格会弹出Extract Table提示窗口

如果选择Yes,就可以直接抓出整个表格的数据,而不需要选择第二个元素。如果选择No,则需要重复之前的步骤选择第二个元素。


  

4. 练习:

1) 提取链接页面的100条记录,包括名称和价格,将数据存储到一个新建的Excel表格中。

*第一次选取该页的第一个名称, 第二次选取该页的最后一个名称。相比于第二次选取第二个名称,这样更有可能生成一个一致的标识符 (a consistent identifier)。

2) 不适用Recording功能完成一下操作:在记事本中打开字体对话框,将字体改为Arial,样式改为斜体,增大5个字号,并选择一个新的脚本 (Script)。

  • 打开记事本,添加一个Attach Window活动
  • 在Attach Window活动的Do里添加一个Click活动。点击蓝字Indicate element inside window指定元素,接着点击记事本的格式菜单 (Format) 按钮。
  • 在第一个Attach Window活动之后再添加一个Attach Window活动按下F2暂停并打开格式菜单,暂停结束后点击弹出的格式菜单。
    • 因为UiPath会把格式菜单当作一个新的窗口,所以需要添加一个新的Attach Window活动。
  • 在第二个Attach Window活动的Do里添加一个Click活动,点击格式菜单里的字体 (Font) 按钮。
  • 为弹出的字体对话框添加一个新的Attach Window活动
  • 在第三个Attach Window活动的Do里添加一个Type Into活动,指定元素并点击字体的输入框,输入Arial。
  • 再添加一个Type Into活动,指定元素并点击字体样式的输入框,输入Italic。
  • 添加一个Get Text活动,指定元素并点击字号的输入框。新建一个Int32型的变量fontSize,将它设置为Get Text活动的Output。
  • 添加一个Type Into活动,指定元素并点击字号的输入框,输入(fontSize+5).ToString
  • 添加一个Select Item活动,指定Script的下拉菜单为Target的Selector参数,输入Greek作为Input的Item参数

注意:

  • F2暂停并不是只能在Recording的时候用,在选取元素的时候都可以使用。
  • 如果用Ctrl+L创建的变量提示类型错误,可以尝试在变量面板重新创建。

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

  • Get Full Text
  • Get Visible Text
  • Get OCR Text
  • Google OCR
  • MS Office OCR
  • Write CSV 
  • Write Range:将DataTable数据写入一个Excel表格。
  • Click
  • Select Item:选择下拉菜单可以用这个活动。
  • Environment.Newline:添加新行。例如:"Get Full Text: " + textGFT + Environment.Newline + "Get Visible Text: " + textGVT

 

原文地址:https://www.cnblogs.com/TeresaMu/p/9851252.html