本文章會講述如下幾個內容:
一、什麼是PO設計模式(Page Object Model)
二、爲何要使用PO設計模式
三、使用PO設計模式要點
四、PO設計模式實例html
一、什麼是PO設計模式 (Page Object Model)
一種在測試自動化中變得流行的設計模式,使得自動化測試腳本的減小代碼重複、更易讀、減小維護成本。
通常PO設計模式有三層
第一層:git
- 對Selenium 進行二次封裝,定義一個全部頁面都繼承的 BasePage ,
- 封裝 Selenium 基本方法 例如:元素定位,元素等待,導航頁面 ,
- 不須要所有封裝,用到多少方法就封裝多少方法。
第二層:github
- 頁面元素進行分離,每一個元素只定位一次,隔離定位,若是頁面改變,只須要改變相應的元素定位;
- 業務邏輯分離 或 操做元素動做分離
第三層:設計模式
二、爲何要使用PO設計模式
- 頁面頻繁變化,(頁面html結構等變化)致使頁面UI元素頻繁變更,元素定位改變
- 傳統線性自動化(面向過程開發),用例中須要反覆的定位同一個元素
- 每當頁面發生變化的時候,須要在用例中尋找變更的部分,工做量大,容易產生遺漏,不容易維護
三、使用PO設計模式要點
- 不要在page頁面對象外作元素定位
- 不在page頁面對象裏面寫斷言,除非是頁面是否成功加載斷言
- 須要多少個元素就定位多少個,不須要對整個頁面的元素進行定位
- 當你的用例設計頁面跳轉時,例如登錄操做,登錄完成後跳轉首頁,當頁面發生「跳轉」
,封裝的業務邏輯須要返回(return)對應的頁面對象的實例
- BasePage封裝Selenium 基礎方法,不須要所有封裝,用到多少方法就封裝多少方法
四、 PO設計模式實例
以TAPD做爲項目例子,用PO設計模式實現登錄:
Github地址:https://github.com/SEtester/easy_POM框架
用例:
標題:登錄成功
前置條件:打開TAPD登陸頁 https://www.tapd.cn/cloud_logins/login
操做步驟:
1. 輸入用戶名(手機或郵箱):XXXXXX
2. 輸入密碼:XXXXXX
3. 點擊登錄按鈕
預期結果:
3. 頁面跳轉至「工做臺-個人待辦」
項目目錄:
![image](http://static.javashuo.com/static/loading.gif)
base_page.py
![image](http://static.javashuo.com/static/loading.gif)
login_page.py
![image](http://static.javashuo.com/static/loading.gif)
![image](http://static.javashuo.com/static/loading.gif)
worktable_to_do_page.py
![image](http://static.javashuo.com/static/loading.gif)
test_login.py
![image](http://static.javashuo.com/static/loading.gif)
Page object model 官方文檔
Github 官方文檔地址 : https://github.com/SeleniumHQ/selenium/wiki/PageObjects單元測試
文末,感謝乙醇老師指導