雲擴RPA研習社 | 淺析自動化原理(上)
01什麼是自動化,為什麼要自動化
RPA中的自動化指的是"軟體自動化",是指在計算機上,用程式去模擬人操作計算機的過程。在沒有人為介入的情況下,自動地完成一系列軟體操作。其核心是對目標控制元件的查詢定位。
不論是單平臺、還是跨系統場景下的的資料抓取、比對、錄入、查詢,企業往往需要僱傭諸多勞動力,來進行許多機械式的重複勞作,無形間增加了企業的運作負擔。
針對以上場景"雲擴RPA自動化技術"運應而生,透過RPA自動化流程實現工作場景的降本增效,為企業的"商業創新"帶來更多的人力價值。
02自動化的底層原理
2.1 雲擴RPA錄製技術
(1)目前雲擴RPA支援的自動化技術有
-
UIA/UIA3
-
IA
-
Java
-
瀏覽器(IE,Chrome等)
對於一些企業常用的軟體,雲擴還專門為此最佳化了的定製自動化技術,比如SAP等大型企業辦公軟體。
不同自動化技術的底層原理各不相同,在這裡只做簡單的列舉。
(2)關於IA&UIA/UIA3介紹
-
IA基於微軟早期的可訪問技術-Microsoft Active Accessibility(MSAA)。透過COM元件將介面控制元件的部分屬性和介面暴露出來,對於開發年代比較早的軟體,它相對能支援的很好;
-
UIA/UIA3利用了微軟的的UI Automation技術,相比MSAA暴露更多的控制元件資訊和動作,特別對於WPF開發的應用,它做到了原生支援,是比IA更好的選擇。
(3)關於常用錄製技術的介紹
① Web錄製技術,主要針對瀏覽器的網頁介面:
-
Web自動化採用注入JavaScript的方式,在瀏覽器對應網頁的內部注入對應的JavaScript可執行指令碼,透過JavaScript指令碼對web元素的控制,從而實現自動化。
-
Web自動化依賴雲擴開發的 Web Extension(外掛/擴充套件) 作為通訊媒介,從而實現控制對應的JavaScript指令碼到指定Web頁面。所以要使用Web自動化瀏覽器均需要提前安裝對應的Web Extension擴充套件(IE除外)。
② Jab錄製技術 ,主要針對桌面客戶端軟體(也對部分內嵌網頁的客戶端有效):
-
JAB 以官方的Java Access Bridge為基礎,對其部署方式做了增強。以及對AWT元件和自定義元件的可訪問性做了一定的擴充。支援錄製Java應用,如EAS,NC等,使用前需要安裝Java擴充套件。
③ SAP錄製技術,主要針對SAP客戶端 :
SAP面向SAP Logon客戶端,基於SAP GUI Scripting技術。透過對已有介面的封裝,SAP錄製技術向使用者提供更靈活豐富的錄製執行功能,使用前,需進行一系列配置已啟用SAP的指令碼執行功能。
2.2 元素詳解
(1)什麼是元素?
元素指介面上可以互動或者提供資訊的一塊區域,這塊"區域"對應的是:
-
應用上真實存在的控制元件,如:按鈕,選單等;
-
也可以是虛擬出來的區域, 如:影像對應的一塊區域、包含某文字的區域。
(2)基礎元素介紹
目前支援的元素型別可以分為兩大基礎類:桌面元素和網頁元素。其中:
-
桌面元素指的是:普通桌面元素(UIA/UIA3/IA),JAVA元素和SAP元素;
-
網頁元素指的是:Chrome,IE,Edge,Firefox(火狐),360和ENCOO(雲擴)瀏覽器元素。
(3)特殊補充類元素
在基礎元素之上,另有兩大特殊的補充類元素:影像元素和CV元素。它們都是在基礎元素對應的螢幕區域內,執行特殊的匹配動作。此時的基礎元素稱為錨點。
-
影像元素:利用圖片對比完成匹配;
-
CV元素:利用計算機視覺模型對目標區域進行分割,並根據描述符資訊完成匹配。
大部分的元素採用選擇器作為查詢依據,CV元素採用描述符。
2.3 選擇器&描述符(簡介&修改方法)
(1)描述符
描述符僅適用於CV元素,結構如圖:
描述符內容說明:每條關鍵資訊由+號隔開;Target是目標元素的描述資訊;Anchor是輔助定位目標元素的元素。
匹配時,如果控制元件型別(上圖的Text)和文字(上圖的20)無法唯一限定某一元素,便需要用到輔助元素。
輔助元素會透過與目標元素的相對位置來對目標進行限制。
(2)選擇器
選擇器是一個支援檢視所指定元素的詳細資訊的視窗,同時提供編輯功能,使用者可以自定義指定元素資訊。
選擇器結構--如圖所示:
選擇器內容說明:
第1行:指明瞭當前元素的基礎型別以及目標應用的程式名,用於定位目標應用;
第2行:記錄了元素所在的頂層視窗資訊。一個程式可以不止有一個頂層視窗,這一行是為了做出區分;
第3行開始:一直往下是一層層的子控制元件資訊,逐步縮小範圍,最終定位到具體的某一個控制元件元素。
最後1級:根據元素型別而不同, 如果如上圖是Image型別的,那說明這是個影像元素。
(3)元素定位&元素查詢(基本原理)
A.對於非web元素:
-
錄製時
會從高亮的控制元件開始,做一個bottom-up的控制元件樹遍歷,得到從應用主視窗到目標控制元件的控制元件樹鏈;然後抽取各個控制元件的關鍵特徵作為定位目標的依據,這些特徵和程式資訊組合起來便稱為選擇器。
-
執行時
先根據選擇器中的程式和主視窗資訊,找到目標控制元件所在的主視窗;然後按照控制元件樹資訊鏈執行top-down的逐級查詢。
-
最終定位到目標控制元件。
B.對於web元素:
-
錄製時,web元素的選擇器由以下兩者共同組成:
首先會記錄所有iframe層級的資訊;
其次,還會根據自定義演算法或者xpath的演算法,抽取出目標元素的關鍵標籤資訊。
-
執行時,先定位到目標iframe,然後在目標iframe根據剩下的元素資訊去定位到具體的元素。
(4)修改元素的3個辦法:萬用字元,變數和XPath
方法A. 萬用字元
當選擇器裡的關鍵屬性(通常是Name和Title屬性)會動態變化時,需要手動在該屬性里加入萬用字元以使得屬性值能與各種可能的實際值配對上。目前支援兩個萬用字元:?和*。
? 用於匹配任意一個字元,相當於正規表示式的
*用於匹配任意長度的任意字元,相當於正規表示式的
如果是CV元素的描述符要用萬用字元,那麼直接用正規表示式即可。
方法B. 變數
當需要根據外部資料去動態修改選擇器時,可以將目標屬性值用變數代替。
格式是: {{變數}}
常見的使用場景:
遍歷並操作表格中的每一行:此時如果有與行號關聯的屬性,則直接往該屬性傳變數即可,否則可以只保留控制元件型別屬性,然後新增Index屬性並使用變數。
方法C. Xpath
錄製web元素時,如果預設的選擇器格式無法滿足需求,或者使用者更熟悉XPath,那麼也可以用XPath來定位web元素。
只需要開啟選擇器編輯器介面,在設定裡勾選上“生成XPath”選項,下一次錄製便會使用XPath格式來定位元素。
2.4 執行動作&匹配查詢
(1)元素執行動作
點選和輸入文字元件可以選擇執行動作的方式:
-
滑鼠鍵盤模擬,模擬手動敲擊按鍵或者滑鼠鍵
-
設定控制元件。直接呼叫控制元件的相關介面來觸發動作。
① 使用WEB元素時,預設是設定控制元件的方式,桌面元素則相反;
② 輸入文字元件的清空文字選項只有在設定控制元件時才生效。
③ 正常情況下,普通的鍵鼠模擬便能模擬各種輸入和點選 但是在某些特定情景下(例如許多網銀的登陸介面),普通模擬被做了安全限制, 這時可以嘗試使用元件市場裡的“鍵盤模擬集合”元件,它們能以更高的許可權去嘗試模擬輸入。
(2)元素匹配查詢
超時時間= 匹配元素的時間 + (匹配到元素後)等待元素消失的時間
1)以“等待元素消失”元件為例,元件中總共包括3個時間概念,即:
概念①: 元件匹配元素的時間——指限定查詢目標元素的時間,預設為15000毫秒
概念②:匹配到元素後等待元素消失的時間(兩種情況)
第一種:“匹配超時”時間結束也未找到該元素
-
由於未找到元素,所以無需繼續等待,即此時等待元素消失的時間為0)
第二種:在“匹配超時”的時間內找到該元素
-
則從找到該元素起直到“超時”時間結束,都是去等待元素消失的時間。
概念③: 元件執行的總時間(即超時,預設為30000毫秒)
2)元件執行的邏輯:
-
先根據匹配超時設定的時間去頁面查詢指定的元素, 如在該時間內未找到該元素,則元素不存在而直接執行成功;
-
如果在匹配時間內找到該元素,則會在找到該元素後到超時時間結束前,不斷驗證元素是否存在,直到元素消失則執行成功或元素未消失則報錯超時。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015058/viewspace-2910587/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲擴RPA研習社 | 淺析自動化原理(下)
- 雲擴RPA研習社 | 流程設計指南(上)
- 雲擴研習社 | RPA流程開發最佳實踐(上)
- 雲擴研習社 | RPA高階開發技巧(下)
- 雲擴研習社 | RPA流程開發最佳實踐(下)
- 雲擴RPA研習社 | 解析流程開發主要步驟
- 雲擴RPA研習社 | RPA開發基礎之什麼是RPA機器人機器人
- 雲擴RPA研習社 | RPA開發基礎之編輯器的基本用法
- 雲擴RPA研習社|如何快速將網頁資料轉存Excel網頁Excel
- 雲擴RPA研習社 |一文帶你快速掌握容錯機制
- 雲擴研習社 | 流程設計指南(下)
- 雲擴RPA機器人突破電商疆界,助力電商自動化。機器人
- HashSet淺析原理學習
- 【RPA】機器人流程自動化(RPA)概念、原理與實踐機器人
- 雲擴RPA助力頭部貨代亞東國際自動化升級
- JavaScript模組化原理淺析JavaScript
- 618電商大戰,雲擴RPA助力電商自動化,推動企業數字化轉型!
- 【雲擴RPA】EmailAutomationIntroAI
- Flutter動畫實現原理淺析Flutter動畫
- 淺析MyBatis的動態代理原理MyBatis
- RPA案例| 雲擴助力保險行業開啟超自動化運營新階段行業
- koa原理淺析
- BTrace 原理淺析
- Seata原理淺析
- 淺析Promise原理Promise
- AQS原理淺析AQS
- Webpack 原理淺析Web
- InheritedWidget原理淺析
- 淺析DES原理
- Kotlin 效能優化利器 —— Sqeuence 原理淺析Kotlin優化
- 前端動畫實現以及原理淺析前端動畫
- RPA機器人 |雲擴助力光伏能源企業開啟運營自動化升級機器人
- RPA財務流程自動化 | 浦發集團攜手雲擴科技加速財務數字化運營
- markdown-it 原理淺析
- [譯] React效能優化-虛擬Dom原理淺析React優化
- 郵件RPA流程自動化處理的原理及實際應用
- 淺析volatile原理及其使用
- redux-saga 原理淺析Redux