03.03 Selenium自動化不為人知的祕密武器


大家都知道大名鼎鼎的Selenium,是一個用於Web應用程序自動化測試工具。可以幫助測試人員解決迴歸測試和多瀏覽器兼容性測試的問題,通過自動化腳本來提升測試效率,

今天本文來介紹下Selenium的另外的一個應用小場景,網頁內容爬取。


說到爬蟲,大家應該並不陌生,Python下面用requests庫就可以實現,但是如果你對接口測試只是不是很熟悉,用Selenium來簡單爬取下頁面上的內容也是一個很便捷的方案,畢竟Selenium入門上手還是很簡單的。


Selenium環境不會搭建的小夥伴請自行百度下環境搭建的步驟,本文不對基礎環境搭建進行講解哦。


下面我們以Testfan社區(ask.testfan.cn)為例,介紹下如何使用Selenium自動化工具實現簡單的爬蟲功能,我們先用Python腳本實現下,Java代碼類似,主要借鑑代碼邏輯思路即可。我們的需求是把testfan社區文章模塊下的前面N頁的文章爬取下來(文章標題和每個文章的url,文章模塊的地址是http://ask.testfan.cn/articles)


首先我們分析下testfan社區文章模塊的url格式,我先隨便翻幾頁看看:


Selenium自動化不為人知的秘密武器


上面的圖,這是第2頁


Selenium自動化不為人知的秘密武器


上面的圖,這是第5頁


分析上面2個頁面的url,我們發現http: // ask.testfan.cn /articles?page= 2 //此處的page=2是控制的翻頁的頁碼,也就是說如果我想看第1的文章,那我把page=2改成page=1就可以了,以此類推


Selenium自動化不為人知的秘密武器


接下來我們分析下每頁中的文章標題在dom裡的位置和結構,我們想獲取每個文章的標題文本和文章的url鏈接,此處的定位方式很多,自己練習下,本文代碼案例採用css定位方式。


Selenium自動化不為人知的秘密武器


咱們接著說,css去描述完文章標題所在的鏈接元素是這樣的(是不是很簡潔,一下子能定位到當前頁的幾十個文章):".title > a",然後獲取鏈接元素的href屬性和元素的文本信息即可。


Selenium自動化不為人知的秘密武器


剩下的就是循環打印當前頁每個文章的標題和URL並保存到文件中了

,當搞定當前頁面後,更新下一個頁面的URL再繼續就可以了。

代碼實現邏輯參考如下:


Selenium自動化不為人知的秘密武器


有的同學會說那Selenium基於實體瀏覽器基於頁面回放可能爬取速度會比較慢一些,這裡推薦2個虛擬瀏覽器(無界面的), HtmlUnit和PhantomJS

,他們都不是真正的瀏覽器,運行時不會渲染頁面顯示內容,但是支持頁面元素查找,js的執行等;由於不進行css和gui渲染,運行效率要比真實的瀏覽器要快很多。


那下面這個代碼案例就是Java腳本配合HtmlUnitDriver提高運行效率後代碼,邏輯和上面的Python+FF瀏覽器是一樣的,大家自行參考邏輯即可


Selenium自動化不為人知的秘密武器


寫在最後,爬蟲有風險,爬取須謹慎!

作  者:Testfan 樓管家

出  處:微信公眾號:自動化軟件測試平臺


分享到:


相關文章: