1、安裝Python和Selenium包
安裝Python:安裝不同平臺的Python可以在http://python.org/download/
安裝Selenium:pip3 install -U selenium
PyCharm設定:使用社區版,配置Python的解釋器
2、Selenium WebDriver基于Python的實體腳本(Demo)
1)從Selenium包匯入WebDriver才能使用Selenium WebDriver的方法;
2)選用一個瀏覽器驅動實體,會提供一個幾口去呼叫Selenium命令來跟瀏覽器互動;
3)設定10s隱式等待時間來定義Selenium執行步驟的超時時間;
4)呼叫driver.get()方法訪問該應用程式,方法呼叫后,WebDriver會等待,一直到頁面加載完成才繼續執行腳本;
5)Selenium WebDriver提供多種方法來定位和操作這些元素,例如設定值,單擊按鈕,在下拉組件中選擇選項等;
這里使用find_element_by_id來定位搜索輸入框;這個方法會回傳第一個id屬性值與輸入引數匹配的元素;
(HTML元素是用標簽和屬性定義的)
6)通過send_keys()方法輸入新的特定值,呼叫submit()提交搜索請求;
7)加載搜索結果頁面,我們讀取結果串列的內容并列印輸出;通過find_elements_by_xpath獲取路徑滿足
class='c-abstract'的所有div標簽,它將回傳多于一個的元素串列;
8)最后我們列印,獲取到的標簽的文本內容;在腳本的最后,我們可以使用driver.quit()來關閉瀏覽器;
3、使用unittest撰寫單元測驗以及寫Selenium WebDriver測驗
實作執行測驗前置條件、測驗后置條件,比對預期結果和實際結果,檢查程式的狀態,生成測驗報告,創建資料驅動測驗等功能;
1)Test Fixture(測驗夾具):
使用測驗夾具,可以定義在單個或多個測驗執行之前的準備作業和測驗執行之后的清理作業;
2)Test Case(測驗用例):
unittest中執行測驗的最小單元,通過驗證unittest提供的assert方法來驗證一組特定的操作和輸入以后得到的回應;
unittest提供了一個名為TestCase的基礎類,可以用來創建測驗用例;
3)Test Suit(測驗套件):
一個測驗套件是多個測驗或測驗用例的集合,是針對被測程式的對應的功能和模塊創建的一組測驗,一個測驗套件內的測驗用例將一起執行;
4)Test Runner(測驗執行器):
測驗執行器負責測驗執行調度并且生成測驗結果給用戶;
測驗執行器可以使用圖形界面、文本界面或者特定的回傳值來展示測驗執行結果;
5)Test Report(測驗報告):
測驗報告展示所有執行用例的成功或者失敗狀態的匯總;包括失敗的測驗步驟的預期結果和實際結果,還有整體運行狀況和運行時間的匯總;
6)一般測驗分為三個部分,即3A‘s
① Arrange:初始化前置條件,初始化被測驗的物件,相關配置和依賴;
② Act:執行功能操作;
③ Assert:用來校驗實際結果與預期結果是否一致;
4、用TestCase類來實作一個測驗
1)我們將通過集成TestCase類并且 在測驗類中為每一個測驗添加測驗方法來創建單個測驗或者一組測驗;
測驗用例使用excel維護,并且進行引數化,通過自定義context背景關系管理的類,來操作excel,對excel中的引數進行匹配和替換;
2)TestCase中的常用的assert方法,最主要的任務是:
呼叫assertEqual()來校驗結果;
assertTrue()來驗證條件;
assertRaises來驗證預期的例外;
通過使用第三方庫pymysql(Mysql)查詢SQL,和TestCase的回傳值,進行匹配校驗;
操作程序中重要的回傳結果將通過呼叫logger來進行記錄,以便快速定位問題;
3)除了添加測驗,還可以添加測驗夾具,setUp()方法和tearDown()方法;
4)一個測驗用例是從setUp()方法開始執行,因此可以在每個測驗開始前執行一些初始化的任務;此方法無引數,也無回傳值;
5)接著撰寫test方法,這些測驗方法命名為test開頭,這種命名約定通知test runner哪個方法代表測驗方法;
6)值得注意的是:test runner能找到的每個測驗方法,都會在執行測驗方法之前先執行setUp()方法,
這樣有助于確保每個測驗方法都能夠依賴于相同的環境;
7)tearDown()方法會在測驗執行完成之后呼叫,用來清理所有的初始值;
8)最后就是運行測驗:為了能通過命令列測驗,我們可以在測驗中添加對main方法的呼叫;
9) 優化:為了能讓各個測驗方法共用一個實體,我們可以創建類級別的setUp()和tearDown()方法:
1)通過setUpClass()方法和tearDownClass()方法及@classmethod標識來實作;
2)這兩個方法使在類級別初始化資料,替代了方法級別的初始化;
5、學習unittest提供的不同型別的assert方法
斷言:unittest的TestCase類提供了很多實用的方法來校驗預期結果和實際結果是否一致;以下為常用的集中斷言方式:
assertEqual(a, b [, msg]);
assertNotEqual(a, b [, msg]);
assertTrue(x [, msg]); assertFalse(x [, msg]);
assertIsNot(a, b [, msg]);
assertRaises(exc, fun, *args, **kwds);
6、為一組測驗創建TestSuite
應用unittest的TestSuites特性,可以將不同的測驗組成一個邏輯組,然后設定統一的測驗套件,并通過一個命令來執行;
具體通過TestSuites、TestLoader和TestRunner類來實作的;
我們使用TestSuites類來定義和執行測驗套件,將多可測驗加到一個測驗套件中;
還用TestLoader和TextTestRunner創建和運行測驗套件;
7、使用unittest擴展來生成HTML格式的測驗報告
8、如何進行元素定位
1)要搜索一個產品,需要先找到搜索框和搜索按鈕,接著通過鍵盤輸入要查詢的關鍵字,最后用滑鼠單擊搜索按鈕,提交搜索請求;
2)Selenium提供了很多find_element_by方法定位頁面元素,正常定位的話,相應的WebElement實體會被回傳,
反之將拋出NoSuchElementException的例外;
3)8種find_element_by方法:
——find_element_by_id()
——find_element_by_name()
——find_element_by_class_name()
——find_element_by_tag_name()
——find_element_by_xpath()
——find_element_by_css_selector()
——find_element_by_link_text()#標簽之間的文本資訊
——find_element_by_partial_link_text()
4)8種find_elements_by方法按照一定的標準回傳一組元素:
——find_elements_by_id()
——find_elements_by_name()
——find_elements_by_class_name()
——find_elements_by_tag_name()
——find_elements_by_xpath()
——find_elements_by_css_selector()
——find_elements_by_link_text()
——find_elements_by_partial_link_text()
5)值得一提的是class定位:class屬性是用來關聯CSS中定義的屬性的;
通過對元素ID、name、class屬性來查找元素是最為普遍和快捷的方法;
也可以增加一個測驗用例斷言元素的可用性:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/227256.html
標籤:其他
上一篇:Postman發送get請求
下一篇:掌握生產中API管理的工具和技術
