新手入門:使用Selenium進行自動化測試

在這裏插入圖片描述
對於很多剛入門的測試新手來說,大家都將自動化測試作爲自己職業發展的一個主要階段。可是,在成爲一名合格的自動化測試工程師之前,我們不僅要掌握相應的理論知識,還要進行大量的實踐,積累足夠的經驗,以便快速適應工作需求。

今天,筆者就想給大家介紹一些,關於使用Selenium進行自動化測試的實戰案例經驗。希望對測試新手們有所幫助。

1、測試自動化與Selenium工具

首先,我們要先澄清一個觀點,自動化測試不可能完全取代手動測試。換句話說,就是自動化測試是爲了減少手動運行測試用例數,幫助快速測試多語言站點,提高測試執行速度;是爲了節省手動測試帶來的時間成本、計算準確性成本等,而不是爲了完全擺脫手動測試。因此,希望測試新手們對此有一個清晰的認知。

實事上,自動化測試的過程很簡單,你只需要執行以下步驟:

在這裏插入圖片描述
下面,切回正題。自2000年以來,基於開源工具和應用程序的成本效益、效率、可重複性、準確性和易用性越來越被大家接受和喜愛,因此,使用開源工具進行自動化測試就變得越來越重要。而作爲開放源代碼工具之一,Selenium工具(簡稱Selenium)在自動化測試方面,展現了自己的極大優勢。

Selenium包含IDE、RC、Webdriver和Grid等組件,主要用於WEB交互和迴歸測試。它除了具有記錄和回放功能外,還能幫助我們將記錄的腳本導出爲其他語言,包括Java,C#,Python,Ruby,Javascript和PHP等。

除此以外,Selenium web driver還允許我們通過其封裝好的API進行自動化腳本開發,更好地輔助迴歸測試,通過數據驅動DDT,關鍵字驅動,PO等設計模式的結合應用,可以讓我們的自動化腳本更具可靠性,可維護性,及延展性。

2、使用Selenium進行跨瀏覽器測試

顧名思義,跨瀏覽器測試就是在不同的Web瀏覽器和設備上,測試Web應用程序是否能夠正常使用,以確保其在每個設備和瀏覽器上都能正常運行的一種測試。

那麼,我們爲什麼需要跨瀏覽器測試呢?例如,同一個電商頁面,在Chrome瀏覽器中能夠正常顯示,且操作流暢但並不能確保在同一臺機器上IE(通常有不同版本),火狐等瀏覽器上也能正常顯示且操作順利。這也是爲什麼產生跨瀏覽器測試的由來。

如今,跨瀏覽器測試已成爲Web應用程序測試的必需項。Selenium可以幫助我們在同一臺計算機上,執行包括Safari、Chrome、Firefox、IE等不同瀏覽器的測試用例。並且,它還支持多種語言和操作系統。

3、使用Selenium進行測試的一些技巧分享

1)便捷好用的定位器

Selenium web driver中封裝的API給我們提供了8中定位頁面元素的方式:通過id或name定位,通過class name或tag name定位,通過link text和partial link text定位,xpath定位,CSS定位;同時還提供了模擬頁面元素操作方法,鍵盤操作,JS事件處理等一些方法,來滿足與瀏覽器交互的功能。

2)可利用數據驅動做測試

Selenium還具備其他優秀特質。比如,如果要爲不同的輸入使用相同的測試和相同的代碼,那麼,選它就對了。Selenium允許開發人員和質量檢查團隊進行修改,因爲它可以用於系統功能測試,以及瀏覽器兼容性測試。

另外,Selenium還有測試加速器,可以啓動客戶端自動化測試。這可以大大縮減你的迴歸測試周期,爲你節約時間。

3)不依賴特定的驅動程序

永遠不要依賴於某一種特定的驅動程序,去做自動化測試。因爲,不同的瀏覽器版本針對的驅動程序都是1-1對應的,舉個例子,不存在這樣的萬能驅動程序,可以兼容各個版本各個廠商提供的瀏覽器。

另外,還可能發生不存在某種驅動程序的可能。比如,並非每一個chrome版本都有與之能對應上的驅動程序,這樣就需要對被測瀏覽器進行範圍上的指定,有針對性地選擇當前項目中必須測試的那些瀏覽器等。

4)使用Page Objects

時下,Page Object已成爲了測試自動化中的最佳設計模式。因爲它不僅能增強測試維護能力,還能減少代碼重複。此外,它還是一個面向對象的類(OOC),可以充當被測應用程序頁面的接口。

簡言之,Page Object是一種面向對象的設計模式,它重新定義了一些內容。如下:網頁=類別;頁面上的各種元素=變量;用戶互動=方法。

因此,它具備以下優點:

由於測試代碼和頁面代碼時分開的。因此,Page Object可以抵制微小的UI調整,助於我們構建更穩固的代碼框架。

服務不會通過測試分散,但是該頁面提供的所有服務都有一個存儲庫。

可靠且易於維護。

腳本是可讀的,且代碼是可重用的,還可以完全消除重複部分。

5)可利用等待代替睡眠,提升測試效率

Selenium具備Thread.sleep()邏輯,可以利用等待代替睡眠,從而提升測試效率。因爲,我們都知道,睡眠不僅會減慢測試速度,並且,我們很難確定他什麼時候執行完畢;而等待則不同,它能幫我們判斷等待時長,並保證測試速度,從而提升我們的測試效率。

Selenium爲我們提供了兩類常用的等待模式:顯示等待和隱式等待,分別用於不同的場景下,兩者也可以搭配着使用,從而更好地輔助自動化測試。

6)當時間緊迫時,不要害怕破解Selenium

在工作中,有時候我們會遇到時間比較緊急,但工作量又比較大的情況。這種時候,我們要學會靈活應對。關鍵時刻,你可以通過入侵Selenium Webdriver,來製作有效的自動化腳本。下面給大家介紹兩個快捷技巧。(劃重點啦!!)

技巧1:Test NG報告–屏幕快照鏈接

使用以下代碼,來鏈接到Test NG報告的屏幕截圖。這可以讓你快速獲取捕獲屏幕截圖的超鏈接。

在這裏插入圖片描述
技巧2:檢查Web元素的存在

使用下面這串代碼,你將可以快速檢查Web對象的代碼大小並確定特定Web元素的存在。

在這裏插入圖片描述
實際工作中,Selenium還具備很多實用的功能。如果你能充分利用Selenium,就可以創建一個穩定、真實和可靠的UI自動化流程。當然,前提是你得積累Selenium的各種使用技巧,並經常應用他們。
在這裏插入圖片描述
上面是我收集的一些視頻資源,在這個過程中幫到了我很多。如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加入我們扣扣羣【313782132 】,裏面有各種軟件測試資源和技術討論。

軟件測試是IT相關行業中最容易入門的學科~不需要開發人員燒腦的邏輯思維、不需要運維人員24小時的隨時待命,需要的是細心認真的態度和IT相關知識點廣度的瞭解,每個測試人員從入行到成爲專業大牛的成長路線可劃分爲:軟件測試、自動化測試、測試開發工程師 3個階段。

如果你不想再體驗一次自學時找不到資料,沒人解答問題,堅持幾天便放棄的感受的話,可以加我們的軟件測試交流羣,裏面有各種軟件測試資料和技術交流。