天天看點

selenium chrome插件_自動化測試之Selenium架構

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)的方式,将測試用例組織在一起。

selenium chrome插件_自動化測試之Selenium架構

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/

Selenium pytest

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/

selenium chrome插件_自動化測試之Selenium架構

謝謝閱讀 歡迎關注

繼續閱讀