Selenium系列(二十) - PageObject模式的詳細介紹


如果你還想從頭學起Selenium,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1680176.html

 

其次,如果你不懂前端基礎知識,需要自己去補充哦,博主暫時沒有總結(雖然我也會,所以我學selenium就不用復習前端了哈哈哈...)

 

前言

  • 在UI自動化測試中,PO是目前最為主流,也是公認最佳的設計模式
  • UI自動化測試最初是通過關鍵字驅動+數據驅動的形式來實現,然后升級到PO模式

 

什么是關鍵字驅動

  • 簡單而言,就是將Selenium常用功能進行二次封裝
  • 譬如:把查找元素、點擊、輸入等原生方法進行封裝
  • 特點:可以讓不懂代碼的測試人員也能做自動化測試,徹底地實現測試步驟、測試數據和程序的分離

 

關鍵字驅動 vs RF

  • 可以把關鍵字驅動對比用RF(Robot Framework)做的自動化測試,在RF GUI界面調用關鍵字,並傳入參數即可完成一系列的元素操作;
  • 而我們在Pycharm上完成關鍵字驅動也是相同道理,封裝好Selenium常用方法,然后去調用關鍵字,不同頁面傳入不同的參數即可完成一系列的元素操作

 

什么是數據驅動

  • 固定的程序,固定的測試步驟,使用不同的數據進行測試【需要多組數據來測試】
  • 將代碼和數據進行分離,單純由數據組成文件,再由文件來驅動關鍵字,最終實現整個自動化的流程

 

什么是關鍵字驅動+數據驅動

  • 讀取數據,將固定格式的數據進行拼接【讀取數據】
  • 拼接后的內容作為關鍵字所需要的參數,進行傳入【傳入數據】
  • 調用關鍵字,將執行結果和預期結果進行對比,從而獲取單條測試用例執行是否通過的結果【執行關鍵字,斷言結果】

 

關鍵字驅動+數據驅動是一種設計模式哦! 

 

什么是PO模式

  • PO模式是page object model的縮寫,是一種設計模式
  • 把待測頁面當成一個頁面對象,一般包含了元素對象的定位和元素操作方法,將頁面對象和真實的網站頁面一 一映射起來
  • 比如一個登錄頁面,使用PO模式后,操作的步驟如下:
    1. 會先創建一個class,該class就是登錄頁面對象類
    2. 類的屬性:用戶名輸入框,密碼輸入框,登錄按鈕的webElenent
    3. 類的方法:各種元素操作的方法
    4. 方法里面會調用對象庫層的二次封裝Selenium的方法
    5. 測試層從頁面操作層調用操作方法,寫成測試用例,這種模式可以做到定位元素與測試用例分離
  • 所以這樣的設計理念就是PO模式

 

PO模式的分層

PO模式可以把一個頁面一般分為三層

對象庫層:二次封裝Selenium的方法

頁面操作層(也稱:邏輯層):封裝頁面的元素對象和元素操作

測試層(也稱:業務層):多個頁面操作完成一個業務測試,一般結合單元測試框架(unittest、pytest)來測試

當然也有分四層的

對象庫層:二次封裝Selenium的方法

頁面層:封裝頁面的元素對象

操作層:封裝頁面的元素操作

測試層:多個頁面操作完成一個業務測試

 

PO模式和關鍵字驅動+數據驅動有什么區別?(PO模式的原理)

  • 升級到PO模式之后,首先將Selenium常用的功能,結合實際業務需要進行二次封裝;封裝的內容是完全貼合實際業務來實現的【封裝Selenium】
  • 將元素對象和元素操作進行整合【元素對象整合】
  • 將對象庫和測試代碼分離,實現數據與代碼分離【數據與代碼分離】

 

PO模式給代碼帶來的優勢

  • 代碼冗余明顯降低:二次封裝Selenium方法和提取公共方法,提高代碼復用性
  • 代碼的閱讀性明顯提升:因為三層分級,將不同內容進行不同的封裝,整體代碼閱讀性提升
  • 代碼維護性明顯提升:UI測試中,頁面若經常變動,代碼的維護量隨之增多;因為三層分級,我們只需要修改頁面對象的代碼,如元素對象或者操作對象的方法,不用修改測試用例的代碼,也不影響測試用例的正常執行
  • 降低代碼耦合性

 


免責聲明!

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



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