學習大綱
- 創建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方法,因為它是一定可以運行的。之后再嘗試使用Simulate或WindowMessages方法來提高運行速度或者實現在后台工作。
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 Element或Region可以更改提取信息的區域。
這里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