沈意吉 唐松 張一帆 上海市計量測試技術(shù)研究院
Selenium 作為瀏覽器自動化測試框架通常用于B/S 架構(gòu)應(yīng)用系統(tǒng)程序和功能的測試,然而也能用于信息化日常運(yùn)維場景,解決運(yùn)維中重復(fù)和繁瑣的工作。在此方面的應(yīng)用可以減少人員和維護(hù)成本的投入,通過python 腳本調(diào)用Selenium 庫可如真實用戶操作B/S 架構(gòu)應(yīng)用一樣。本文將通過對天 內(nèi)網(wǎng)安全風(fēng)險管理與審計系統(tǒng)中移動存儲設(shè)備自動授權(quán)的實例研究來闡述Selenium 對信息化日常運(yùn)維工作的意義。
天 內(nèi)網(wǎng)安全風(fēng)險管理與審計系統(tǒng)(以下簡稱天 系統(tǒng))(版本號 V6.6.9.6)作為一款內(nèi)網(wǎng)合規(guī)管理產(chǎn)品,具有準(zhǔn)入控制、安全防護(hù)、補(bǔ)丁管理、非法外聯(lián)、移動存儲、終端審計、桌面運(yùn)維、認(rèn)證管理等功能。
移動存儲設(shè)備授權(quán)管理為本文應(yīng)用需求的重點,此功能對已提交的合規(guī)移動存儲進(jìn)行終端計算機(jī)授權(quán)。因天 系統(tǒng)未提供終端計算機(jī)分組功能,在授權(quán)移動存儲時,必須手動選擇每臺可使用移動存儲的終端計算機(jī)名(數(shù)量大于300 臺)。若存在N 個用戶在不同時點提交移動存儲授權(quán)申請,操作人員須及時響應(yīng)每次申請,必將手動選擇N × 300 臺,結(jié)合天 系統(tǒng)M 分鐘無響應(yīng)操作注銷當(dāng)前用戶、操作人員因疲勞、疏忽誤選、漏選等因素,造成了移動存儲授權(quán)管理的日常運(yùn)維工作效率低,維護(hù)人員離不開移動存儲設(shè)備授權(quán)管理界面,用戶等待審批時間過長等問題。
Selenium瀏覽器自動化測試框架可以完美解決這類人機(jī)交互問題,并且天 系統(tǒng)為B/S 架構(gòu),滿足Selenium 的應(yīng)用條件。
移動存儲授權(quán)操作流程的梳理如圖1 所示,針對每個頁面收集各類元素的位置。html 元素的位置可用元素的xPath 值,使用火狐瀏覽器的開發(fā)工具箱中元素選擇工具選擇需要的html 控件,在開發(fā)工具箱查看器中找到控件html 代碼,右鍵選擇復(fù)制再選擇XPath,即可得到各個元素、值和操作如表1 所示,用于后續(xù)通過Selenium 的函數(shù)來定位元素和賦值。
圖1
表1
3.2.1 登錄系統(tǒng)
通過webdriver.Firefox()生成一個WebDriver 類的實例,并啟動系統(tǒng)自帶的Firefox 瀏覽器,通過get(url)函數(shù)給瀏覽器傳遞一個URL,瀏覽器加載頁面。
find_element(by_mode,value_WebElement_xPath) 返 回 登 錄頁面user 和password 控件的WebElement 兩個實例,再使用send_keys(*value)將用戶名和密碼傳遞給瀏覽器。
find_element 函數(shù)獲取登錄頁面提交按鈕的實例,調(diào)用click()函數(shù)完成登錄。登錄使用的用戶名和密碼通過讀取配置文件信息,提高靈活性。
3.2.2 授權(quán)移動設(shè)備
點擊天 系統(tǒng)主頁由左邊菜單導(dǎo)航邊欄后,主頁由三部組成,分別是左邊菜單導(dǎo)航邊欄,右上方分菜單頁面和右下方移動存儲設(shè)備授權(quán)頁面。從html 源碼分析得到右下方移動存儲設(shè)備授權(quán)頁面實際地址(http://ip:port/desktopmgr/StorageMgr.aspx),直接調(diào)用get(url)使瀏覽器跳轉(zhuǎn)此頁面。
移動存儲設(shè)備通過多行(單頁最多顯示22 行,其中第一行為標(biāo)題行,最后一行為頁碼行)8 列的表格方式顯示。如圖2 所示,判斷第六列為“未認(rèn)證”、第三和四列的非空項后點選第一列多選控件按鈕使被認(rèn)證的移動存儲設(shè)備選中。
圖2
對選中移動存儲設(shè)備個數(shù)判斷:等于1 的直接獲取設(shè)備編號欄中移動設(shè)備的元素實例并調(diào)用click()函數(shù)跳轉(zhuǎn)至單個移動設(shè)備授權(quán)頁面;大于1 的則用click()函數(shù)點擊批量選中設(shè)備按鈕跳轉(zhuǎn)至批量移動設(shè)備授權(quán)頁面。
在授權(quán)頁面完成操作權(quán)限的選擇,并用click()函數(shù)點擊“查看及編輯”鏈接,如下圖3 所示。
圖3
對象類型選擇主機(jī)名,程序通過依次讀取可使用移動存儲設(shè)備的主機(jī)列表(csv 文件)中主機(jī)名與頁面中顯示主機(jī)名字比對并點擊主機(jī)名前的多選框控件。若以后需要增加主機(jī)只需在主機(jī)表中添加主機(jī)名即可(主機(jī)名必須與系統(tǒng)顯示主機(jī)相同)。部分代碼和局部運(yùn)行結(jié)果如下圖4、5所示。
圖4
圖5
通過Selenium 自動化框架開發(fā)此程序在1 分40 秒內(nèi)完成了移動設(shè)備的授權(quán)工作,完全解放了員工在系統(tǒng)中選擇主機(jī)名的不便之處。
通過程序輸出日志文件可以獲取程序每個節(jié)點操作情況和是否匹配主機(jī)名成功的信息,為調(diào)試和排錯提供了便利。
程序設(shè)計未考慮使用圖形化、數(shù)據(jù)庫和定時多線程方式運(yùn)行。
win7 sp1、Firefox 瀏 覽 器、Firefox 驅(qū) 動、python3.6 和Selenium3.12。