沈意吉 唐松 張一帆 上海市計量測試技術研究院
Selenium 作為瀏覽器自動化測試框架通常用于B/S 架構應用系統程序和功能的測試,然而也能用于信息化日常運維場景,解決運維中重復和繁瑣的工作。在此方面的應用可以減少人員和維護成本的投入,通過python 腳本調用Selenium 庫可如真實用戶操作B/S 架構應用一樣。本文將通過對天 內網安全風險管理與審計系統中移動存儲設備自動授權的實例研究來闡述Selenium 對信息化日常運維工作的意義。
天 內網安全風險管理與審計系統(以下簡稱天 系統)(版本號 V6.6.9.6)作為一款內網合規管理產品,具有準入控制、安全防護、補丁管理、非法外聯、移動存儲、終端審計、桌面運維、認證管理等功能。
移動存儲設備授權管理為本文應用需求的重點,此功能對已提交的合規移動存儲進行終端計算機授權。因天 系統未提供終端計算機分組功能,在授權移動存儲時,必須手動選擇每臺可使用移動存儲的終端計算機名(數量大于300 臺)。若存在N 個用戶在不同時點提交移動存儲授權申請,操作人員須及時響應每次申請,必將手動選擇N × 300 臺,結合天 系統M 分鐘無響應操作注銷當前用戶、操作人員因疲勞、疏忽誤選、漏選等因素,造成了移動存儲授權管理的日常運維工作效率低,維護人員離不開移動存儲設備授權管理界面,用戶等待審批時間過長等問題。
Selenium瀏覽器自動化測試框架可以完美解決這類人機交互問題,并且天 系統為B/S 架構,滿足Selenium 的應用條件。
移動存儲授權操作流程的梳理如圖1 所示,針對每個頁面收集各類元素的位置。html 元素的位置可用元素的xPath 值,使用火狐瀏覽器的開發工具箱中元素選擇工具選擇需要的html 控件,在開發工具箱查看器中找到控件html 代碼,右鍵選擇復制再選擇XPath,即可得到各個元素、值和操作如表1 所示,用于后續通過Selenium 的函數來定位元素和賦值。

圖1

表1
3.2.1 登錄系統
通過webdriver.Firefox()生成一個WebDriver 類的實例,并啟動系統自帶的Firefox 瀏覽器,通過get(url)函數給瀏覽器傳遞一個URL,瀏覽器加載頁面。
find_element(by_mode,value_WebElement_xPath) 返 回 登 錄頁面user 和password 控件的WebElement 兩個實例,再使用send_keys(*value)將用戶名和密碼傳遞給瀏覽器。
find_element 函數獲取登錄頁面提交按鈕的實例,調用click()函數完成登錄。登錄使用的用戶名和密碼通過讀取配置文件信息,提高靈活性。
3.2.2 授權移動設備
點擊天 系統主頁由左邊菜單導航邊欄后,主頁由三部組成,分別是左邊菜單導航邊欄,右上方分菜單頁面和右下方移動存儲設備授權頁面。從html 源碼分析得到右下方移動存儲設備授權頁面實際地址(http://ip:port/desktopmgr/StorageMgr.aspx),直接調用get(url)使瀏覽器跳轉此頁面。
移動存儲設備通過多行(單頁最多顯示22 行,其中第一行為標題行,最后一行為頁碼行)8 列的表格方式顯示。如圖2 所示,判斷第六列為“未認證”、第三和四列的非空項后點選第一列多選控件按鈕使被認證的移動存儲設備選中。

圖2
對選中移動存儲設備個數判斷:等于1 的直接獲取設備編號欄中移動設備的元素實例并調用click()函數跳轉至單個移動設備授權頁面;大于1 的則用click()函數點擊批量選中設備按鈕跳轉至批量移動設備授權頁面。
在授權頁面完成操作權限的選擇,并用click()函數點擊“查看及編輯”鏈接,如下圖3 所示。

圖3
對象類型選擇主機名,程序通過依次讀取可使用移動存儲設備的主機列表(csv 文件)中主機名與頁面中顯示主機名字比對并點擊主機名前的多選框控件。若以后需要增加主機只需在主機表中添加主機名即可(主機名必須與系統顯示主機相同)。部分代碼和局部運行結果如下圖4、5所示。

圖4

圖5
通過Selenium 自動化框架開發此程序在1 分40 秒內完成了移動設備的授權工作,完全解放了員工在系統中選擇主機名的不便之處。
通過程序輸出日志文件可以獲取程序每個節點操作情況和是否匹配主機名成功的信息,為調試和排錯提供了便利。
程序設計未考慮使用圖形化、數據庫和定時多線程方式運行。
win7 sp1、Firefox 瀏 覽 器、Firefox 驅 動、python3.6 和Selenium3.12。