selenium chrome外掛_自動化測試之Selenium框架
技術標籤:selenium chrome外掛selenium自動化測試selenium自動化測試框架web自動化測試框架
Selenium幾乎是國內web自動化測試中必不可少的工具,以簡單便捷著稱,在python語言下更受測試工程師的喜愛。其衍生的Appium適用於移動端自動化測試。
概括介紹下Selenium相關的幾個框架,Unittest, Pytest;POM,PF希望給你帶來幫助。
Selenium是由ThoughtWorks的工程師Jason Huggins在2004年創造的。
Selenium是一個免費(開源)的自動化測試框架,用於跨不同瀏覽器和平臺驗證web應用程式。可以使用多種程式語言(如Java、C#、Python等)來建立Selenium測試指令碼。
Selenium軟體不僅僅是一個單一的工具,而是一套軟體,每一個都滿足不同的測試需求。它包括以下四種工具:
Selenium Integrated Development Environment (IDE)
Selenium Remote Control (RC)
WebDriver
Selenium Grid
Selenium整合開發環境(IDE)是Selenium套件中最簡單的框架,也是最容易學習的框架。它是一個Firefox外掛,你可以很容易地安裝它。然而,由於它的簡單性,Selenium IDE應該只用作原型工具。如果要建立更高階的測試用例,則需要使用Selenium RC或WebDriver。
隨著技術的進步,Selenium RC 與 WebDriver 合併成我們常用的Selenium2, 繼而進化成Selenium3。對瀏覽器的支援也變得越來越好。
Selenium支援的瀏覽器有:
Browser | Maintainer | Versions Supported |
Chrome | Chromium | All versions |
Firefox | Mozilla | 54 and newer |
Internet Explorer | Selenium | 6 and newer |
Opera | Opera Chromium/Presto | 10.5 and newer |
Safari | Apple | 10 and newer |
Selenium常與Unittest,pytest結合使用,做單元測試或API測試。
Unittest測試框架
Unittest是python自帶的單元測試框架,持自動化測試,測試用例的初始化、關閉和測試用例的聚合等功能,它有一個很重要的特性:它是通過類(class)的方式,將測試用例組織在一起。
TestLoader:它是一個Python類,用於載入在本地或從外部資料來源(如檔案)建立的測試用例和套件。
TestSuite:它充當分組測試用例的容器。
TestCase:儲存測試處理程式,並提供用於準備每個處理程式和在執行後清理的鉤子。如teardown().
TestRunner:它為執行測試提供了一個可執行的介面,並將結果傳遞給使用者。它可以使用像GUI這樣的通道、文字媒體或返回標準程式碼來通知測試執行的結果。
TestReporter:組織測試結果,顯示執行的測試用例的通過/失敗狀態。還可以提供了步驟的詳細資訊、整個執行的摘要以及執行過程中所經過的時間。
Page Object Model(POM)框架
從Selenium2開始,介面自動化測試開始變的容易,只需要定位元素執行動作即可,但是隨著時間的增加,測試套件的內容會逐漸增大,頁面內容會有幾個增長到成千上萬,看似容易維護的程式碼變的複雜起來,指令碼也隨之異常臃腫,這種情況下維護指令碼也變的更困難,而且容易出現各種錯誤。為此引入了POM框架。
POM是資料驅動、模組化和混合框架的組合。這是一種系統化地組織指令碼的方法,使得QA能夠輕鬆地維護程式碼,避免麻煩,同時也有助於防止冗餘或重複的程式碼。
POM框架分離了頁面元素與業務流,提高了程式碼的可讀性,使維護更加容易。
PageFactory框架是加強版的POM框架,一次性初始化頁面元素,與POM的初始元素不同,為建立頁面元素物件提供了不同的方法。
POM不使用Pagefactory
search_input = (By.ID, u'kw')
POM使用Pagefactory
locators = { "ipUsearch": ('ID', 'kw'),}
以下示例為Selenium結合Unittest 和 pagefactory,登入126郵箱。
# _*_ coding:utf-8 _*_import unittestfrom selenium import webdriverfrom seleniumpagefactory.Pagefactory import PageFactoryclass LoginPage(PageFactory): def __init__(self,driver): # 初始化驅動,這步必須有 self.driver = driver # 新增元素到頁面工廠 locators = { "ipUserName": ('NAME', 'email'), "ipPassword": ('NAME', 'password'), "btnSignIn": ('ID', 'dologin') } def login(self): # set_text(), click_button() 使用擴充套件方法 self.ipUserName.set_text("username") self.ipPassword.set_text("password") self.btnSignIn.click_button()class LoginTest(unittest.TestCase): def test_Login(self): #Path = chromedriver.exe的真實路徑 driver = webdriver.Chrome(executable_path='Path') driver.get("https://mail.126.com/") driver.switch_to.frame(0) pglogin = LoginPage(driver) pglogin.login()if __name__ == "__main__": unittest.main()
參考文獻
What is Selenium?
https://www.guru99.com/introduction-to-selenium.html
Selenium Pagefactory
https://selenium-page-factory.readthedocs.io/en/latest/
Selenium with python
https://selenium-python.readthedocs.io/
Seleniumpytest
https://pytest-selenium.readthedocs.io/en/latest/user_guide.html
Unittest
https://python.readthedocs.io/en/v2.7.2/library/unittest.html
POM
https://pypom.readthedocs.io/en/latest/
https://pom.readthedocs.io/en/latest/
謝謝閱讀 歡迎關注