問題
防火牆政策的變更,會以工單的形式送進政策管理平台,等人審查。審一張單要先登入、開啟審查佇列、點進工單連到的政策修訂、展開變更清單、找到工單所指的那條規則,再把它截下來當佐證。每一步都不難,但整個佇列做下來很耗時,佐證也不一致:截圖範圍不同、檔名各異,也沒有紀錄說明當時看了什麼。
做法
把審查當成一條每個階段都會留下痕跡的流程,而不是一串手動點擊。
- 用瀏覽器自動化(Python 搭配 Selenium)操作網頁介面,因為要的佐證就是審查者在畫面上看到的內容。
- 每個頁面元素準備多組 selector,依序嘗試,因為平台介面會隨版本改變,不能因為一次改版就整個停擺。
- 失敗要看得見:抓不到精確的佐證時,改存整頁截圖並記錄警告。
運作方式
一次執行只要一個指令。設定來自環境變數或本機的環境檔,命令列參數可以覆寫;--config 會印出實際生效的設定,密碼只顯示「已設定」或「未設定」。
- 啟動 Chromium 系瀏覽器(可選無頭模式);驅動程式失敗時,自動改用另一個支援的瀏覽器。
- 登入,帳號、密碼與送出按鈕都透過有順序的 selector 清單來定位。
- 進入審查模組,讀取佇列中的前兩張工單。
- 對每張工單,取出規則識別名稱與修訂連結,在新分頁開啟修訂,並點選顯示變更的按鈕。
- 找出與工單規則完全相符的那一列,捲動到該列並存成元素截圖,檔名包含工單序號、規則識別名稱與時間戳記。找不到相符的列,就存整頁截圖。
- 關閉分頁、回到佇列,最後列出所有已擷取的檔案。
每個步驟都會把帶時間戳記的一行寫到終端機與日誌檔。另有一支輔助腳本,讀取修訂的變更紀錄文字,列出哪些成員被新增、哪些被移除,讓審查者看的是差異,而不是兩份很長的清單。
成果
- 一個指令就能為每張工單產出一致的異動規則截圖,以及一份記錄過程的日誌。
- 2026 年的一次維護,讓專案重新能在乾淨的 Python 3.11 環境安裝;一套腳本化檢查(安裝、模組匯入、命令列說明與相依套件一致性)10 項全數通過。
- 我沒有量測節省的時間,所以本文不給數字。專案沒有自動化測試;2026 年那次維護也沒有可連線的平台,因此驗證的是安裝與匯入,不是瀏覽器流程本身。
學到的事
- 靜默的設定失敗最糟。環境檔載入的時間晚於讀取它的模組,設定被無聲忽略;先載入環境檔就解決了,另外
--config能顯示實際生效的設定。 - 清掉沒用的相依套件。一個沒人使用的套件把舊版 Selenium 主版本釘死,讓需求檔根本裝不起來。
- 沒有測試,就留一個 smoke check:在全新環境安裝、匯入每個模組、跑一次說明。
- 有順序的 selector 能吸收介面改版,但也可能把改版藏起來;所以要記錄走了哪一條路,並保留備援截圖。
- 截圖含有內部政策細節,保存時要和政策本身同等謹慎。