Day 10 自動化培訓課程
在操作全委新系統時,腳本經常因為找不到按鈕或點擊無效而中斷。這通常不是程式寫錯,而是環境變數造成的。
匯出對帳單或結帳報表時,系統準備檔案的時間由 3 秒到 30 秒不等,取決於資料量大小。
輸入多重條件查詢資產損益時,前端 UI 會短暫凍結,直到後端回傳完整 JSON 資料。
執行整批匯款或撥轉時,系統需要逐筆檢核,導致「確認」按鈕延遲亮起。
新手工程師最愛用的 Sleep(5000) 是自動化維護的夢魘。
我們應該告訴腳本:「最多等 10 秒,只要條件一滿足,立刻執行下一步。」
設定一個最大容忍時間 (Timeout)。
腳本會以極短的頻率 (例如每 0.5 秒) 檢查目標元素。
發現目標 $\rightarrow$ 提早結束等待,繼續執行。
超時未發現 $\rightarrow$ 拋出 TimeoutException,進入異常處理。
網路請求可能會丟包,點擊動作偶爾會被阻擋。我們需要包裝一層 Try-Catch-Retry 邏輯。
應對全委新系統的「三層式」狀態檢核
在操作前,首先確認網頁的 DOM 樹中是否已經載入該按鈕或欄位。
網頁剛跳轉時,DOM 還在構建。此時試圖獲取「查詢餘額」按鈕,會直接引發 NoSuchElementException。
使用 Wait.Until(ElementExists)。
注意: 元素存在「不代表」可以直接點擊,它可能被隱藏或是透明的。
解決「按鈕在畫面上,但按了沒反應」的靈異現象。
display: none) 隱藏。disabled 屬性。Wait.Until(ElementToBeClickable) 作為點擊前的最後守門員。點擊沒有報錯,不代表系統已經處理完畢。重試機制的關鍵在於確認結果。
驗證指標 (Indicators of Success):
當系統發生嚴重雍塞時,連續快速地重試只會給伺服器帶來更大壓力,甚至觸發防火牆阻擋 (DDoS 防護)。
聰明的重試間距: 每次失敗後,等待的時間成倍數增長。
當所有重試機制都耗盡,自動化腳本必須優雅地結束,並提供足夠的除錯資訊。
將我們今天學到的機制串聯起來:
[Step 1] 啟動輪詢,等待「報表下載」按鈕 Exist & Clickable (Timeout: 15s)
[Step 2] 執行 Click() 動作
[Step 3] 進入 Validation 迴圈,檢查預設下載資料夾是否有 .xls 新檔案產生。
> 發現 5 秒內無檔案產生,觸發 Catch。
[Step 4] 執行 Retry,退避 2 秒後,重新點擊下載按鈕。
[Step 5] Validation 成功,寫入 Log 並進入下一個自動化環節。
請隨時提出您在開發自動化工具時遇到的問題