選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
6 分鐘閱讀時間 (1105 個字)

從零開始學 RPA:AutoIt、Power Automate、Automation Anywhere 的使用經驗-Part3[AutoIt 3兄弟]

Designer-1

首先先介紹工具 AutoIt

AutoIt 是一個建立在 Windows 平台上的免費 Windows GUI 自動化工具,主要運作方式為透過操控使用者的滑鼠及模擬鍵盤按鍵的方式來自動的完成一些重複性的操作,語法也算是非常簡單,對於會寫程式的人而言入門難度並不算高,官網上也有開放原始碼,有興趣的人可以載來看看。

AutoIt 要一組安裝三兄弟,才方便使用的。

No 工具名稱與下載連結 敘述
 1  AutoIt Recorder-錄製工具  安裝起來是版本目前最新版本是 v3.3.14.0
 2  SciTE及Exe   編輯工具,跟執行工具
 3  AutoIt Info(下載位置同上)  取得物件的相關資訊
簡介:   
AutoIt Recorder 錄製器 是以 C++ 撰寫而成,初期可以透過錄製器錄製一些最簡單的操作來熟悉 AutoIt 的使用。     
沒有被打包在原始的安裝包中,原因可以看 此Forum 瞭解一下。     
錄製介面說明:到 [安裝目錄]\Extras\Au3Record 這個路徑可以找到錄製程式,開啟之後會看到如下圖的控制介面。     
                                    
 1. 點選後即開始錄製              2. 選擇錄製時是否縮小視窗        3. 錄製文字                                       
4. 錄製滑鼠(這必勾啊!!)AutoItRecorder.jpeg
5. 讀取已經 Compile 過的執行檔後,會先執行該 SCRIPT 中的動作,

再進行後續錄製,要錄製大型測試腳本的話是一個頗方便的功能                                                                    

常用語法:

指令名稱用途說明
Run 執行外部程式或檔案。
RunWait 執行外部程式並等待其結束後才繼續執行下一步。
Send 模擬鍵盤輸入。
MouseClick 模擬滑鼠點擊。
MouseMove 移動滑鼠到指定座標。
WinWaitActive 等待指定視窗變成作用中視窗。
WinActivate 將指定視窗設為作用中視窗。
WinClose 關閉指定視窗。
WinExists 判斷指定視窗是否存在。
ControlClick 模擬點擊某個控制元件(如按鈕)。
ControlSend 向某個控制元件送出鍵盤輸入。
ControlSetText 設定控制元件的文字內容(例如輸入框)。
MsgBox 顯示一個訊息視窗(彈出提示框)。
Sleep 暫停指定的時間(毫秒),可用於延遲。
If / Else 條件判斷語句,依據條件執行不同區塊的程式碼(雖然是語法,但很常見)。


撰寫注意與開發關卡的處理:

※ 1. 將多支程式都會用到的程式碼,把同一掛目標的處理用指令
      Func funcName1() ... EndFunc 歸在一起,     
      一個 Function 維持 Single Responsibility 的原則處理,     
      顆粒度自行斟酌。放在另外共用的的檔案,例如 commmonXYZ.au3
      主程式使用 #include ".\..\..\common.XYZ.au3" 把切出去的共用程式 納入 進來

※  2.視窗的切換可透過下列方式處理:

      If Not WinActive($title,$text) Then WinActivate($title,$text)
      WinActivate 可透過錄製取得到 $title , $text
      如果有錄製到動態名稱的 text 可以去掉留下 "" 即可,title 能正確對到即可。

※ 3. 輸入從中文模式 切換為 英文模式的處理:
      Opt('WinWaitDelay',100)
      Opt('WinDetectHiddenText',1)
      Opt('MouseCoordMode',0)
      Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
      If $aResult[1] <> '00000404' Then
            Sleep(2000)
            _WinAPI_SetKeyboardLayout($hWnd, "0x0409")
      ; 呼叫 api 強制設定輸入模式為英文,上面要先 include <WinAPISys.au3>
      EndIf

※ 4.  把視窗最大化
         WinSetState("[ACTIVE]", "", @SW_MAXIMIZE)

※ 5. 能使用快捷按鍵,盡量使用,會比使用滑鼠來的穩定,當頁面有改版,座標軸會異動,快速按鍵不會更動,

        如 Send("{CTRLDOWN}s{CTRLUP}") crtl+s 打開存檔視窗,alt+s 完成存檔
        減少存檔按鈕變更位置(這裡指的是 MS Office 的工具頁面)

※ 6. 取得網頁文字存起來

      Global $webText="0000"
      Send("{CTRLDOWN}c{CTRLUP}")
      $webText = ClipGet()

Part3 就先到這裡囉。   

高併發壓力來襲,你的服務是彈性伸縮,還是直接斷線?
兩種語言,一個目標:從衝突到協作的過程

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2025/08/21, 週四

Captcha 圖像