基於Python Selenium Unittest PO設計模式詳解
阿新 • • 發佈:2018-12-23
本文章會講述以下幾個內容:
1、什麼是PO設計模式(Page Object Model)
2、為什麼要使用PO設計模式
3、使用PO設計模式要點
4、PO設計模式例項
1、什麼是PO設計模式 (Page Object Model)
一種在測試自動化中變得流行的設計模式,使得自動化測試指令碼的減少程式碼重複、更易讀、減少維護成本。
一般PO設計模式有三層
第一層:
- 對Selenium 進行二次封裝,定義一個所有頁面都繼承的 BasePage ,
- 封裝 Selenium 基本方法 例如:元素定位,元素等待,導航頁面 ,
- 不需要全部封裝,用到多少方法就封裝多少方法。
第二層:
- 頁面元素進行分離,每個元素只定位一次,隔離定位,如果頁面改變,只需要改變相應的元素定位;
- 業務邏輯分離 或 操作元素動作分離
第三層:
- 使用單元測試框架對業務邏輯進行測試
2、為什麼要使用PO設計模式
- 頁面頻繁變化,(頁面html結構等變化)導致頁面UI元素頻繁變動,元素定位改變
- 傳統線性自動化(面向過程開發),用例中需要反覆的定位同一個元素
- 每當頁面發生變化的時候,需要在用例中尋找變動的部分,工作量大,容易產生遺漏,不容易維護
3、使用PO設計模式要點
- 不要在page頁面物件外做元素定位
- 不在page頁面物件裡面寫斷言,除非是頁面是否成功載入斷言
- 需要多少個元素就定位多少個,不需要對整個頁面的元素進行定位
- 當你的用例設計頁面跳轉時,例如登陸操作,登陸完成後跳轉首頁,當頁面發生“跳轉”
,封裝的業務邏輯需要返回(return)對應的頁面物件的例項
- BasePage封裝Selenium 基礎方法,不需要全部封裝,用到多少方法就封裝多少方法
4、 PO設計模式例項
以TAPD作為專案例子,用PO設計模式實現登陸:
Github地址:https://github.com/SEtester/easy_POM
用例:
標題:登陸成功
前置條件:開啟TAPD登入頁 https://www.tapd.cn/cloud_logins/login
操作步驟:
- 輸入使用者名稱(手機或郵箱):XXXXXX
- 輸入密碼:XXXXXX
- 點選登陸按鈕
預期結果:
- 頁面跳轉至“工作臺-我的待辦”
專案目錄:
base_page.py
login_page.py
worktable_to_do_page.py
test_login.py
Page object model 官方文件
Github 官方文件地址 : https://github.com/SeleniumHQ/selenium/wiki/PageObjects