1. 程式人生 > 其它 >selenium chrome外掛_自動化測試之Selenium框架

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

dbcb92edd0b1ba3177025a6f9d60ef52.png

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/

f8556f5d43d9decaf3f08a4282205432.png

謝謝閱讀 歡迎關注