鄭海鵬
(淮南聯合大學信息工程學院 安徽淮南 232001)
目前,數據獲取的渠道主要有三種:自有、爬取或購買。其中數據爬取方式屬于數據自動獲取的范疇,可以通過Python編寫Web站點數據獲取自動化測試用例加以實現,并可將獲取到的實驗數據用于數據分析。自動化測試通常用于替代人工方式,去執(zhí)行那些繁雜的、高重復性的操作,進而節(jié)約大量的人力資源。Selenium為Web站點數據自動獲取提供了基礎框架,憑借其自身強大的功能,市場占有額越來越高。本文以Python+Selenium為核心,利用Web Driver數據驅動實現了數據自動獲取功能。
Selenium通常用來編寫Web應用的自動化測試腳本。早期Selenium1.x主要使用Selenium RC(Selenium Remote Control)進行自動化測試。Selenium2.x集成了Selenium和Web Driver的功能。Selenium可以用來模擬用戶在瀏覽器中的操作。軟件測試開發(fā)人員能夠使用不同的編程語言如Java、Scala、Python等編寫測試腳本,并且兼容在Google Chrome、IE、Firefox等瀏覽器中運行測試腳本[1]?;赟elenium是開源的,測試人員可以按需進行個性化定制。
Selenium主要由IDE、Grid和RC三個組件構成[2],其中IDE為瀏覽器插件,提供腳本編輯、錄制及回放功能,錄制腳本可以轉換為Java、Python、PHP等多種腳本語言;Grid實際上是一個jar包,由hub節(jié)點及node節(jié)點構成,可在Dos命令行下執(zhí)行。主要用于測試腳本的分布式處理,允許在多機及異構環(huán)境下運行測試腳本;RC(Remote Control)作為Selenium核心組件,由selenium Server和Client Libraries組成。其中Selenium Server用于控制瀏覽器行為,Client Libraries則在自動化測試腳本執(zhí)行過程中,用以控制selenium Server庫,以便達到自動化測試目的[3]。在Selenium2.x及后續(xù)版本中,使用Web Driver替代了Selenium RC。其中,Web Driver API是客戶端、Web Driver作為瀏覽器驅動。對于程序執(zhí)行過程中的每一條Selenium腳本,均會創(chuàng)建一個HTTP請求,并將該HTTP請求發(fā)送給瀏覽器的驅動Web Driver,由 Web Driver中HTTP Server接收這些 HTTP請求,依據HTTP Server接收到的請求,來具體操控對應瀏覽器。瀏覽器執(zhí)行具體的測試步驟,并將執(zhí)行結果返回給 HTTP Server,HTTP Server又將結果返回給 Selenium的腳本[4](Selenium工作流程圖如圖1所示)。其詳細工作流程如下:
圖1 Selenium工作流程
1)編寫基于Selenium支持的測試腳本程序。
2)執(zhí)行測試腳本程序。
3)Selenium Client向Web Driver發(fā)送請求。
4)Web Driver接收、解析相關請求,并將請求發(fā)送給瀏覽器。
5)瀏覽器接收請求后,執(zhí)行對應操作,返回執(zhí)行結果。
(一)實驗數據需求分析。本文實驗數據來源于域名為http://www.ahcyfc.com的安徽朝陽房產網。打開網站中二手房首頁,仔細查看其中的某條二手房房產信息(如圖2所示),對其中數據做需求分析,為后續(xù)的數據獲取及Web前端展示做鋪墊,需要從中提取的房屋詳細信息包括:二手房所在小區(qū)、戶型、建筑面積、房屋朝向、總價、每平米單價、實際看房人數。編寫Python程序導入Selenium庫,用以實現該網站數據自動化獲取操作。
圖2 二手房詳細信息
(二)腳本設計。Selenium兼容多種瀏覽器。編寫測試腳本過程中,需指明具體瀏覽器,本文使用 Firefox。
1.驅動并打開瀏覽器。
2.定位到對應元素。Selenium在操作瀏覽器時,應先定位到對應的元素。目前,主要有八種定位方法,如表1所示。
表1 Selenium元素定位方法功能描述
在獲取二手房詳細信息的需求過程中,需要定位二手房所在小區(qū)、戶型、建筑面積、房屋朝向、總價、每平米單價、實際看房人數等數據對象。
3.設置Selenium定位方法參數。設置Selenium定位方法參數的實際作用是利用數據驅動將數據和腳本相分離[5]。本研究主要利用的Selenium定位方法為:find_element_by_xpath,即根據路徑表達式來定位二手房測試實驗數據。
全選一條二手房信息,選擇:右擊->審查元素,或按F12鍵來查看網頁源碼,發(fā)現房屋詳細信息的路徑為:
圖3 房屋詳細信息的路徑
根據實驗需求,對二手房所在小區(qū)等7個對象數據進行參數設置。具體腳本設計如下:
(一)數據驅動。在自動獲取實驗數據過程中,采用CSV文件格式來存放實驗數據,在get_houseInfo()方法的末尾加入如下數據驅動腳本代碼:
(二)程序實現。編寫主程序,在主程序中調用get_houseInfo()方法,具體實現代碼如下:
運行程序,顯示實驗數據獲取過程(如圖4所示),并將實驗數據保存至House.csv文件中(如圖5所示),進而實現了實驗數據的自動獲取。
圖4 控制臺輸出自動獲取到的實驗數據
圖5 將實驗數據保存至House.csv文件
本文數據分析針對淮南二手房的每平米單價與房屋面積之間做K-Means聚類關聯分析,給即將買房的人提供買房意見,具體實現過程主要代碼如下(聚類結果如圖6所示):
圖6 房屋單價及面積聚類離散圖
依據聚類結果,將淮南市二手房大體劃分為以下五種類型:
1.郊區(qū)型(紅色區(qū)域):此類房型多數地處郊區(qū)、面積適中,價格低廉。對于購房資金不充足的買房人而言,將是不錯的選擇。
2.市區(qū)中心型(地段好、橙色區(qū)域):此類房型多數地處淮南市核心地段(交通便捷、多數為學區(qū)房),均價最高,而且物以稀為貴在房子上也能驗證。這類房子數量并不多。建議有一定經濟實力的買家購買,可以獲取周邊更好的配套設施及教育資源。
3.剛需型(淺黃色區(qū)域) :此類房型多數地處市內,交通便捷,出行辦事方便,面積、價格適中,房源充足。但地段一般,建議有結婚需求的年輕人購買。
4.“破舊小”型(淺綠色區(qū)域):此類房型面積最小,建筑歷史年代久遠,集中處于舊城、老城區(qū)。但其價格并不便宜。若短期內沒有拆遷需求,不建議購買。
5.大戶型(藍色區(qū)域):此類房型面積最大,價格合理,多為別墅、復式大戶型。建議成功人士購買。
本研究實現了Web網站數據的自動獲取功能,并對獲取到的實驗數據做了簡明的數據分析。實驗表明:基于Selenium的自動化測試框架,用于實現數據的自動獲取,在很大程度上提高了數據的獲取效率[6],可以節(jié)省大量的人力資源。