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