Selenium自動化測試總結


 

一、Selenium自動化測試(基於python)

1、Selenium簡介:

1.1 Selenium是一款主要用於Web應用程序自動化測試的工具集合。Selenium測試直接運行在瀏覽器中,本質是通過驅動瀏覽器,模擬瀏覽器的操作,比如跳轉、輸入、點擊、下拉等,來拿到網頁渲染之后的結果,可支持多種瀏覽器如,chorme,FireFox,IE等。

1.2 Selenium WebDriver:業界通用的測試框架,不僅是web測試的標准,同時在移動測試領域也是底層的核心驅動框架;

1.3 Python是動態語言;

1.4 Selenium包括一系列的工具組件:

1)Selenium IDE:是嵌入到FireFox瀏覽器的插件,用於在Firefox上錄制和回放Selenium腳本,雖然只能在Firefox下使用,但它能將錄制好的腳本轉換成各種Selenium WebDriver支持的程序語言,進而擴展到更廣泛的瀏覽器類型;

   2) Selenium WebDriver:可支持多種語言,用於操作瀏覽器的一套API;支持各類型瀏覽器,跨操作系統WebDriver為諸多語言提供完備的,用於實現web自動化測試的第三方庫;

   3) Selenium Standalone Server:包括Selenium Grid、遠程控制、分布式部署等,均可實現Selenium腳本的高效執行與拓展;利用Grid使得自動化測試可以並行運行,甚至在跨平台、異構的環境中運行;

2、基於python的selenium WebDeriver環境安裝

Selenium可以自動操縱瀏覽器來做很多,如模擬與瀏覽器的交互,而且支持到多數主流瀏覽器;首先需要選擇一門語言來編寫自動化腳本,而這門語言需要有Selenium client library支持選擇Python

2.1 安裝pythonselenium,不同安裝版本可在平台下載

1)安裝selenium

Win:pip install selenium
Mac:  pip3 install selenium

2)安裝WebDriver, 該工具供selenium使用Chrome。(注:webdriver需要和對應的瀏覽器版本以及selenium版本對應)

 

 

 3)WebDriver安裝路徑

 Win:復制webdriver到Python安裝目錄下
 Mac:復制webdriver到/usr/local/bin目錄下

2.2 PyCharm設置

1PyCharm有兩個版本:社區版和專業版,社區版是免費的,可以下載使用;

2) 在使用PyCharm時,需要配置Python的解釋器,我們選擇支持selenium的Python版本解釋器;

3、Selenium WebDriver基於Python實現腳本

  3.1 根據webDriver提供的一系列對象定位方法,獲取元素,實現測試用例

  3.2 webDriver常見的元素定位方法有:

① id定位:find_element_by_id()

② name定位:find_element_by_name()

③ class定位:find_element_by_class_name()

④ link定位:find_element_by_link_text()

⑤ partial link定位:find_element_by_partial_link_text()

⑥ tag定位:find_element_by_tag_name()

⑦ xpath定位:find_element_by_xpath()

⑧ css定位:find_element_by_css_selector()

4、unittest編寫單元測試並輸出測試報告

僅使用Selenium WebDriver,還有一些無法實現的:比如 實現執行測試前置條件、測試后置條件,比對預期結果和實際結果,檢查程序的狀態,生成測試報告等功能;因此需要使用unittest來創建基於Python的Selenium WebDriver測試腳本;

4.1 什么是unittest

Unittest一般也稱為PyUnit,是從java程序開發中廣泛應用的Unit啟發而來,可以使用unittest為項目創建全面的測試套件,unittest具備創建測試用例、測試套件,測試夾具的能力;

unitest組件:

1)Test Fixture(測試夾具):可以定義在單個或多個測試執行之前的准備工作和測試執行之后的清理工作;

2)Test Case(測試用例)unittest中執行測試的最小單元,通過驗證unittest提供的assert方法來驗證一組特定的操作和輸入以后得到的響應,unittest提供了一個名為TestCase的基礎類,可以用來創建測試用例;

3)Test Suit(測試套件):一個測試套件是多個測試或測試用例的集合,是針對被測程序的對應的功能和模塊創建的一組測試,一個測試套件內的測試用例將一起執行;

4)Test Runner(測試執行器):測試執行器負責測試執行調度並且生成測試結果給用戶,測試執行器可以使用圖形界面、文本界面或者特定的返回值來展示測試執行結果;

5)Test Report(測試報告):測試報告展示所有執行用例的成功或者失敗狀態的匯總,包括失敗的測試步驟的預期結果和實際結果,還有整體運行狀況和運行時間的匯總;

4.2 使用unittest來編寫Selenium WebDriver測試

1)Arrange:初始化前置條件,初始化被測試的對象,相關配置和依賴;

2)Act:執行功能操作;

3)Assert:用來校驗實際結果與預期結果是否一致;

4.3 使用TestCase類來實現一個測試

 1)集成TestCase類並且在測試類中為每一個測試添加測試方法來創建單個測試或者一組測試;

2)TestCase中的assert方法,最主要的任務是 調用assertEqual()來校驗結果;assertTrue()來驗證條件;assertRaises來驗證預期的異常,除了添加測試,還可以添加測試夾具,setUp()方法和tearDown()方法;

3)一個測試用例是從setUp()方法開始執行,因此可以在每個測試開始前執行一些初始化的任務;此方法無參數,也無返回值,接着編寫test方法,這些測試方法命名為test開頭,這種命名約定通知test runner哪個方法代表測試方法;

注:test runner能找到的每個測試方法,都會在執行測試方法之前先執行setUp()方法,這樣有助於確保每個測試方法都能夠依賴於相同的環境。

4)tearDown()方法會在測試執行完成之后調用,用來清理所有的初始值;

5)為了能通過命令行測試,我們可以在測試中添加對main方法的調用;我們將傳遞verbosity參數以便使詳細的測試結果展示在控制台;

  測試用例代碼如下圖(Testcase01.py),如果測試通過則,瀏覽器最后會退出,如果出錯的話,控制台則會打印出相關信息,

 

 

                            (圖-Testcase01.py)

4.4 為一組測試創建TestSuite

   1) 應用unittest的TestSuites特性,可以將不同的測試組成一個邏輯組,然后設置統一的測試套件,並通過一個命令來執行;具體通過TestSuites、TestLoader和TestRunner類來實現的;

2)使用TestSuites類來定義和執行測試套件,將多個可測試加到一個測試套件中,還可以用TestLoader和TextTestRunner創建和運行測試套件,舉例如下圖(TestSuites.py);

 

                        (圖-TestSuites.py)

4.5使用unittest擴展來生成HTML格式的測試報告

     unittest的擴展HTMLTestRunner可以實現生成測試報告。生成的的測試報告格式更加友好,既能夠查看測試結果,又能深入各個細節。舉例代碼如下圖(testsuiteshtml.py)

 

 (圖-testsuiteshtml.py)

  測試報告如下圖(TestReport)

 

 

 

5、總結

     以上所寫內容主要是selenium基於python,使用WebDriver、Unittest組件,使用元素定位方式,完成測試用例,輸出測試報告的簡單步驟,具體實際操作中可能會遇到其它問題,具體問題具體解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM