RPA界面元素定位與操控技術詳解

      后臺-系統設置-擴展變量-手機廣告位-內容正文頂部

      什么是 RPA?RPA 是機器人流程自動化 Robotic Process Automation 的簡寫。在《智能RPA實戰》中,我們這樣定義:通過特定的、可模擬人類在計算機界面上進行操作的技術,按照規則自動執行相應的流程任務,代替或輔助人類完成相關的計算機操作。一句話總結就是:用軟件機器人自動化之前由人完成的任務。

      那么什么是 IPA 呢?IPA (Intelligent Process Automation) = RPA+AI。簡單來說就是使用 AI 來強化 RPA 的各項能力。比如:加強 RPA 的界面元素識別能力、賦能 RPA 來完成 RPA 任務執行過程中的智能決策等。我們通常把 RPA 比作抓手、AI 比作大腦。AI 負責思考,RPA 負責行動。RPA 是一個數字化平臺,可以調用計算機所有軟硬件能力。AI 可以作為其中一個智能組件存在,被 RPA 調用。AI 也可以作為 RPA 的一部分進行賦能,比如智能化機器人調度邏輯。

      目前,主要有 CV 和 NLP 兩個領域的 AI 技術在 RPA 中應用比較廣泛。

       1. 計算機視覺 

       

      CV (Computer Vision) 計算機視覺是一個專門研究如何從數字圖像中提取有用信息的領域。在 RPA 中,常見的 CV 技術有模板匹配、光學字符識別、目標檢測等:

      • Template Matching 模板匹配:模板匹配是大圖中定位小圖(模板)的算法。比如在桌面中定位一個圖標的位置、尋找窗體中的一個按鈕等。
      • OCR (Optical Character Recognition) 光學字符識別:通過輸入一張圖像,OCR 模型分析處理后,輸出圖像上的結構化字符信息(字符的坐標、字符的具體值)。比如驗證碼識別、提取發票上的信息等。

      • OD (Object Detection) 目標檢測:通過給計算機輸入一張圖像,讓計算機分析出其中的物體。比如分析一個應用窗體內的所有控件(按鈕、編輯框等)來進行后續的 RPA 操作。

       
       2. 自然語言處理 
       
      NLP (Natural Language Processing) 自然語言處理是一個專門研究如何從文本中提取有用信息的領域。在 RPA 中,常見的場景有:
      • IDP (Intelligent Document Processing) 智能文檔處理:比如合同文檔自動解析:自動化處理大量合同文檔、快速應對審閱、查找、校對等工作。文件信息分析提?。簩ζ髽I招投標文件、內部文檔資料等長篇幅文件進行解析。HR人崗精準匹配:對簡歷進行關鍵信息提取構建人才畫像,匹配精準崗位。
      • 文本審核:黃反審核,識別文本中色情等低俗信息;識別宗教、槍支等反動信息。涉政識別,識別文本中涉政等敏感信息。廣告過濾,識別和攔截廣告信息,并對用戶發言進行識別和分析。垃圾檢測,識別文本中罵人、刷帖等垃圾信息。

       
       3. 應用價值 
       
      RPA 應用價值主要體現在下面幾個方面:
      • 提升企業效率:時間上,人類選手 5 x 8h = 40h。機器選手 7 x 24h = 168h 是人類的 4.2 倍!畢竟 RPA 機器人一天有 3 個工作日,上一天班加兩天班…速度上,業務系統響應有多快,RPA 就能執行有多快。并且不會因為工作時間延長而出現疲勞或準確率降低等問題。
      • 降低人工風險:人類擅長抽象、推理。機器擅長重復。人類在疲倦、外界干擾、主觀情感波動時,容易產生誤操作、誤判。RPA 機器人擅長不斷地重復執行特定的工作。

      • 打通業務系統:不需要改造原有系統、不需要開發接口或 SDK 來實現對接。也就是大家所聽到的“非侵入式”。典型應用就是:完成孤立應用間的數據轉移。

       
       4. 發展歷程 
       
      RPA 發展歷程大概可以概括為以下幾個階段:
      • 有人值守階段:在這個階段 RPA 以“虛擬助手”的身份出現,幾乎涵蓋了機器人自動化的主要功能、以及現有桌面自動化軟件的全部操作。部署在員工PC機上,用于提高工作效率。缺點是難以實現端到端的自動化,做不到成規模應用。不過已能夠有效減少業務平均處理時間,可有效改善客戶體驗并節省成本。
      • 無人值守階段:在這個階段 RPA 被稱為“虛擬勞動力”,主要目標即實現端到端的自動化,以及虛擬員工分級。主要部署在VMS虛擬機上,能夠編排工作內容,集中化管理機器人、分析機器人的表現等。缺點是對于 RPA 軟件機器人的工作仍然需要人工的控制和管理。無人值守 RPA 機器人可以全天候工作 24 * 7,并用業務流程代替了人機交互,釋放了更大的增效降本可能性。

      • 自主性 RPA 階段:在這個階段,RPA 的主要目標是實現端到端的自動化和成規模多功能虛擬勞動力。通常部署在云服務器和 SaaS 上,特點是實現自動分級、動態負載平衡、情景感知、高級分析和工作流。缺點是處理非結構化數據仍較為困難。但更多技術的融合,使得自主性 RPA 可從根本上提升業務價值并為用戶帶來更多優勢。

      • 認知性 RPA 階段:這個階段將是未來RPA發展的方向。開始運用人工智能、機器學習以及自然語言處理等技術,以實現非結構化數據的處理、預測和分析、自動接受任務處理等。借助認知能力,決策過程全都由機器人執行,從而可以將所有漫長而復雜的任務自動化。

      01

      RPA 的核心模塊 

      1、開發平臺

      達觀 RPA 開發平臺

      開發平臺是流程設計者設計流程的工具。主要有以下功能:

      • 流程設計:當我們有一個想法,我們想使它變為可自定執行的流程,我們就需要用它來設計一個流程??梢暬幊探缑?、低代碼編程,提供拖拉拽方式進行業務邏輯的設計。必須要有設計復雜流程的能力,如流程、子流程、第三方庫、自定義組件等功能。也必須要有“封裝”能力,從小流程封裝為大流程。以及提供”復用“的概念,避免重復造輪子。另外還有幾個流程設計過程中的必備工具:
         
         
         
        A. 元素分析器:界面上,我們肉眼看到的一個個按鈕、編輯框等,在 RPA 的世界里都是一個個“元素”。很多可視化組件都是以一個元素作為輸入參數,執行相應的動作,比如“點擊按鈕”、“在編輯框內輸入文本”等。通過元素分析器,我們可以很方便地在屏幕上選擇一個目標元素。有了元素分析器,流程設計者不必擁有過多的底層界面元素技術知識即可識別、定位元素,指哪兒就是哪兒。
         
         
        B.元素錄制器:顧名思義,通過錄制一段用戶的操作,自動地生成一堆可視化組件。在環境干擾比較小的時候,往往很有用。再結合調試進行微調,往往可以較快設計出一個流程原型。
         
         
        C.數據抓?。哼@是一個特別有意思的功能,可以抓取屏幕上的結構化信息:任何看起來像列表、表格、樹的數據都應支持被抓取。
         
         
        D.智能組件包:也就是部分通過 AI 賦能的可視化組件,通過簡單拖拽方式,可以完成像下面的一些功能:
         
      1. 圖片抽取信息:身份證抽取、發票抽取、營業執照抽取、銀行卡抽取、火車票抽取等。
      2. 文檔抽取信息:采購類合同、銀行業零售貸款合同、民事判決、債券募集說明書等。
      3. 文檔智能分析:文本分類、文本審核、文本摘要、標簽提取、觀點提取、情感分析等。
      • 流程調試:流程開發過程中,我們可能需要實時進行調試來發現流程中存在的問題。比如隨機斷點、單步調試、單步進入、單步跳出、查看當前狀態(如變量)等信息。利用調試功能,我們可以很方便地停留在流程的任一步驟,檢查當前的上下文狀態,以便調整、優化流程。
      • 版本管理:流程開發好以后,我們需要發布到控制臺。這個過程也就是“發版”。成熟的 RPA 產品應當有完善的版本化支持,可以為當前流程發布特定的版本。也應支持回滾到歷史任意版本。當然,也應該允許多個流程設計者同時修改同一個流程。

      • 畫中畫:主要目的是提供環境隔離。通過提供一層虛擬會話,將機器人的運行和當前宿主機隔離開。讓機器人在執行的同時,業務老師也能正常使用電腦,互不干擾。

      • 代碼支持:也是專家模式,直接調用底層 API、Block API 等。提供了任意復雜度的擴展,允許有編程能力的流程設計同學進行 RPA 的能力擴展。

       
      2、控制中心
       

      達觀 RPA 控制中心
      控制中心是 RPA 機器人的大腦,所有的任務都從這里下發,也可以說是 RPA 機器人的中央處理單元。主要有以下功能:
      • 流程管理:對已發布的可視化流程進行管理,也可以進行導入導出、查看特定流程版本等。
      • 機器人管理:管理 RPA 機器人。包含審核機器人上線、啟用禁用機器人、是否共享機器人等功能。也可以通過遠程桌面技術,直接查看機器人桌面。

      • 任務管理:任務是機器人運行流程的模板(static、靜態),通過選擇特定的流程、配置特定的參數,可以創建一個任務。任務創建好以后,控制中心會根據任務的調度信息對 RPA 機器人進行調度。

      • 作業管理:當任務開始運行,則會產生“作業”(runtime、動態)。包含機器人的運行時的各種各樣的信息。比如運行日志、運行狀態等。

      • 數據資產:簡單理解就是云端的安全數據庫,在權限滿足的情況下,流程可以增刪查改指定的數據。同時也有安全字段的概念,比如當一個字段為“加密”類型時,我們不應該能夠在開發平臺直接打印出它的值。

      • 權限管理:基于角色的權限管理模型??梢詫Σ煌馁~號賦予不同的角色,對不同的角色賦予不同的功能。

      • 租戶管理:多租戶是一種單個軟件實例可以為多個不同用戶組提供服務的軟件架構。SaaS 就是一種多租戶架構。不同租戶間數據完全隔離。

      • 運維管理:管理 RPA 服務器本身??梢詫Ψ掌鬟M行資源監控、系統運行監控等。

      • 報表分析:控制中心提供了關于機器人所有的數據,我們可以通過這些數據來進行各種統計分析。比如,分析某個流程的執行成功率、某個機器人的執行效率等。

      • 日志審計:每一次操作,都應留痕。應包含 RPA 機器人的相關日志、也包含用戶操作的相關日志。

       
      3、機器人
       
      RPA 機器人:簡單來說就是執行控制中心下發過來的任務。RPA 的執行器!

      02

      RPA 元素分析器

      兩個概念需要理解:用戶界面樹、元素選擇器。
      • 用戶界面樹:用戶界面的抽象數據結構呈現,包含靜態數據和動態數據。樹上的每個節點都是用戶界面上的一個元素。針對每個元素,我們可以對它進行屬性查看、操作測試。
      • 元素選擇器:用于在用戶界面樹上定位某個或某組元素的方式??梢跃珳识ㄎ荒硞€元素,比如找一個標題為 X 的窗體;也可以模糊定位某個元素,找一個按鈕名稱以 X 開頭的元素。

       
      那么為什么需要元素分析器呢?原因在于 UI 框架技術太多了!每種技術,所需要適配的方式都不同。比如,想要自動化 Web,我們需要理解 Web 的自動化技術;想要自動化 Java 程序,我們需要理解 Java 的自動化技術;想要自動化 SAP 程序,我們需要理解 SAP 自動化引擎技術。這個 UI 框架的適配應該交給 RPA 廠商來完成。我們需要一種統一、簡單的方式來自動化我們所看到的一切 UI 元素。流程設計者只需要了解:哦!這里有一個按鈕,我需要點擊它!
      從定位方式來看元素分析器的發展歷程:
      • 絕對坐標定位:自動喝藥輔助外掛。監控屏幕上特定坐標點的顏色變化,當血槽顏色變為灰色時,就喝一瓶金瘡藥(按下使用金瘡藥道具的按鍵)
         

        圖像識別示意圖1
         
      • 圖像識別:在大圖中找小圖。循環監控屏幕上是否出現了“地鼠”,出現了以后,則操作鼠標點擊目標位置。
         

      圖像識別示意圖2
      • 選擇器定位:DOM (Document Object Model) 文檔對象模型,把整個 UI 界面抽象成一個“樹”數據結構,使用 XPath、CSS Selector 等語法來定位。我們可以把選擇器寫得很“精確”,也可以把選擇器寫得很“模糊”。
         

      選擇器定位 DOM 樹示意圖
      • 智能定位:使用 AI 賦能 RPA。比如使用目標檢測相關算法來進行定位。

      目標檢測示意圖

      RPA 最核心的兩個任務:元素的定位和元素的操控
      元素的定位:
      1. 基于屏幕坐標點(HitTest):主要是元素分析器的捕獲功能,可以讓流程設計者便捷地選擇一個目標元素。

      2. 基于選擇器:通過簡單的選擇器語法,選擇 DOM 上的某個或某組元素。主要是流程運行過程中,為了在運行的環境中找到目標元素。

      3. 基于 CV:通過模板匹配或相關 AI 算法來定位目標元素。當業務程序不支持捕獲時,它很有用!

         
      元素的操作:
      1. 基于方法 AT (Assistive Technology):當業務程序支持 AT 時,我們可以直接調用 AT 方法來進行操作。比如調用一個按鈕的點擊功能、設置文本框的內容等。大部分業務程序都支持了 AT 方法!

      2. 基于消息:在 Windows 上,窗體之間可以通過消息來進行通訊。我們可以利用 Window Message 來操控元素。

      3. 基于鍵鼠模擬:在獲取到目標元素后,如果目標元素不支持任何 AT 或消息,我們還可以簡單粗暴地利用鍵鼠模擬來操作。這也是最模擬人工的一種方式,在所有場景都可以用,畢竟人也是通過這種方式來和計算機進行交互的。鍵鼠模擬本質上也是基于 Windows 消息的。

      自動化技術可以按照是否有 GUI 來進行分類。RPA 同時支持兩種自動化,對帶 GUI 或 不帶 GUI 的業務程序都是支持的。
      • 非 GUI 自動化編寫簡單:測試代碼相對容易編寫,調試容易。運行穩定,不容易受到環境變化影響。易于維護,不需要經常更新測試代碼。運行效率高,相對于 GUI 自動化,非 GUI 自動化非??臁?/section>
      • GUI 自動化主要是覆蓋范圍廣:大多遵循 UI 框架底層 Accessibility 規范。非侵入式,不需要業務應用的源代碼或 SDK 接入。(其實本質上是被侵入了……在 UI 框架層?。┳畲蟪潭饶M用戶操作,用戶怎么操作就怎么模擬。

      • 有一些造成 GUI 自動化不穩定的因素:

      1. 隨機彈窗:當自動化腳本發現控件無法正常定位,或無法操作時,GUI 自動化框架自動進入“異常場景恢復模式”。在“異常場景恢復模式”下,GUI 自動化框架依次檢測各種可能出現的對話框,一旦確認了對話框的類型,立即執行預定義的操作(比如:點擊“確定”按鈕),接著重試剛失敗的步驟。

      2. 控件屬性變化:絕對匹配比較精準,但”模糊匹配“彈性更大,可以提升控件的識別率。往往流程設計過程中需要權衡目標元素以及相鄰層級之前的屬性使用。

      3. 被測系統的 A/B 測試:開發流程時見到的界面和運行時見到的界面并不相同。需要在測試用例腳本中做分支處理,正確識別出不同的分支。

      4. 還有一些隨機的頁面延遲造成控件識別失敗:引入重試機制,可以是步驟級別、頁面級別、業務流程級別。

      03

      元素分析器的幕后技術

       1、Win32 API 

      微軟的 Windows 操作系統底層 API。優點就是看起來很高深、很強大、很底層,對標準 Windows 的控件支持還不錯。缺點是很復雜,開發效率低下。不支持自定義控件。

      • 窗體識別:需要通過 FindWindow 和 EnumWindows 來查找到窗口句柄,然后再調用其它 API GetWindowText,GetWindowRect, GetWindowLong 等來獲取窗口屬性,以此來找到想要的控件或窗口。
      • 操控和獲取屬性:通過 SetWindowText 和 GetWindowText 來操作控件上顯示的文字,通過SetForegroundWindow 設置頂層窗口,GetForegroundWindow 獲取當前的頂層窗口,類似的還有 GetActiveWindow 和 SetActiveWindow。從理論上來說,通過 Windows API 和 Windows Message 可以完成對大部分控件或窗口的操作,也可以獲取部分控件的部分屬性。

       
       2. MSAA 
       
      MSAA(Microsoft Active Accessibility) 是一項提升 Windows 輔助控制能力的技術。MSAA 天生就不是設計給自動化測試的,它存在的意義在于提供一套接口,讓開發人員可以方便的給殘疾人開發可以使用的軟件,比如屏幕閱讀程序(鼠標移動到按鈕的時候,可以發出聲音,輔助視力障礙的人操作電腦),從而實現微軟將電腦普及到每一個家庭的夢想。MSAA 主要是基于 COM 的技術。通過 IAccessible 來表示 UI 界面元素的信息。提供了如 AccessibleObjectFromWindow 等 API 來獲取它。MSAA 可以查詢元素信息,比如特定位置的元素信息。注冊事件,當元素信息改變時得到通知。比如當按鈕 disable 了或字符串變化。操作界面元素,比如按鈕、下拉框、菜單等。
      1. 優點:比起 Windows API 來說,用戶只需要跟 IAccessible 打交道,通過這個接口能獲得的控件信息相對豐富很多,基本操作也不需要通過 Windows Message 的方式來實現。另外一個比較大的優點就是,自定義控件的支持,當然了,并不是說開發寫一個自定義控件,這個控件就可以通過 MSAA 來識別,而是說當開發人員在實現自定義控件的時候,可以實現 IAccessible 的接口,并且通過這個接口,把一些的屬性和操作暴露出來,測試人員就可以將這個控件當作標準控件,并通過MSAA來自動化??雌饋砺闊┝它c,但是最起碼對自動化自定義控件提供了可能。
         
      2. 缺點:天生不足,MSAA 從來就不是給自動化測試設計的,所以也不會考慮自動化測試的需求,獲取到的控件信息比 Windows API 多,但是相對自動化測試的需求來說還是遠遠不夠,而且僅僅支持一個基本操作,其它的操作還必須通過 Windows Message。另外就是微軟推出 WPF 以后,MSAA 的局限性越加明顯(這也是因為 WPF 的控件屬性更加豐富、更具定制性、更自由,用 MSAA 難以描述),這也是微軟推出 UIAutomation 的一個的原因。
      它是如何工作的:提供信息的應用稱為 Server;負責處理事件通知 NotifyWinEvent;獲取元素信息 WM_GETOBJECT。Server 通過 IAccessible 來返回元素信息。Client 可以通過 AccessibleObjectFromWindow、AccessibleObjectFromPoint、AccessibleObjectFromEvent、accNavigate、get_accParent 來獲得 IAccessible。
       3. UIA 用戶界面自動化 
       
      UIA 是微軟新一代的 Accessibility 框架,在所有支持 WPF 的操作系統上都支。UIA 提供了大多數 UI 元素可編程訪問的能力。它抽象了大部分 UI 框架的共有屬性,比如 WPF 按鈕的 Content 屬性、Win32 按鈕的 Caption 屬性、HTML 圖像的 ALT 屬性,都被映射成 UIA 的 Name 屬性。另外,UIA 也兼容 MSAA。從架構上來講,UIA 在針對標準控件的時候,通過 UI Automation Proxy 調用了 MSAA Server,基本上覆蓋了 MSAA 的功能。

      UIA 用戶界面自動化
       4. JAB 
       
      JAB (Java Access Bridge)主要是為 Java 應用提供元素信息的框架。主要服務于屏幕閱讀器或其它輔助控制程序。利用 JAB 我們可以訪問到 Oracle 系列應用、金蝶、用友等廠商開發的業務程序。
       5. SAP 
       
      SAP 提供了 Scripting Engine 來進行用戶界面自動化。SAP Scripting Engine 是一套基于 COM 的接口,提供了 SAP 全面的腳本化支持。需要在 RZ11 transaction 下,將 sapgui/user_scripting 參數設置為 TRUE。
       6. Citrix Virtual Channel 
       
      Citrix 提供了 Virtual Channel 的機制來滿足 Client 和 Server 之間的通訊需求。利用 Virtual Channel,我們可以向 Citrix 虛擬桌面發送任意指令、獲取業務所需信息。Citrix 是基于 ICA (Independent Computing Architecture) 協議來實現的。

      Citrix Virtual Channel
       7. RDP Virtual Channel 
       
      RDP (Remote Desktop Protocol) 是微軟開發的一套遠程桌面協議。RDP 也提供了 Virtual Channel 機制來滿足 Client 和 Server 之間的通訊需求。

      RDP Virtual Channel
       8. 瀏覽器控制 
       
      Selenium:開源的瀏覽器控制框架,支持大多數瀏覽器。市面上大多的網頁爬蟲程序都是用 Selenium 來實現的。另外 Selenium 對編程語言非常友好,支持絕大多數編程序言的接入。但……Selenium 太有名了,很多業務網站針對 Selenium 做了很多反自動化的操作,導致 Selenium 操作網頁時,會出現諸如驗證碼、隨機校驗窗體等驗證過程。另外 Selenium 對 IE 支持得不太好。
      • IE自動化:MSHTML/Trident - IWebBrowser2 接口。IE 瀏覽器使用的是 Trident 瀏覽器引擎,是 IE4 在 1997 年發布的。通過提供 IWebBrowser 接口來進行自動化操控。Windows 10 上的 IE11 已在 2022-06-15 號停止維護。
      • Chrome Extension:Chrome 瀏覽器插件是允許開發者自定義用戶使用體驗的一種技術??梢岳?Web 技術,如 HTML、CSS、JavaScript 來自定義瀏覽體驗。
      • CDP (Chrome Devtools Protocol):DevTools 協議是 Chrome、Chromium,或任何基于 Blink 引擎的瀏覽器都支持的一種通訊協議。該協議可以對瀏覽器進行檢查、調試、監控等。Blink 是 Chromium 的渲染引擎。
       
       9. 辦公自動化 
       
      Microsoft Office 自動化主要是通過 COM 技術的 IDispatch 接口來實現。通過 IDispatch,我們可以用任意支持 COM 調用的語言進行自動化,比如 Python、VBS 等。

      未經允許不得轉載:RPA中國 | RPA全球生態 | 數字化勞動力 | RPA新聞 | 推動中國RPA生態發展 | 流 > RPA界面元素定位與操控技術詳解

      后臺-系統設置-擴展變量-手機廣告位-內容正文底部
      主站蜘蛛池模板: 富民县| 太湖县| 伊吾县| 宝山区| 怀化市| 南靖县| 重庆市| 丹江口市| 大同县| 宁津县| 阿巴嘎旗| 曲沃县| 合肥市| 府谷县| 勐海县| 永善县| 云安县| 永福县| 公安县| 鄂尔多斯市| 东平县| 广昌县| 高邮市| 彩票| 喀什市| 醴陵市| 丹凤县| 洞口县| 博野县| 吴堡县| 九江市| 贵州省| 平顺县| 新乡市| 木里| 大港区| 温州市| 泰州市| 金乡县| 陇西县| 萨迦县|