PO設計模式總結:
簡介:
為UI頁面寫測試用例時(比如web頁面,移動端頁面),測試用例會存在大量元素和操作細節。
當UI發生變化時,測試用例也會跟着變化,PageObject很好的解決了這個問題!
使用UI自動化測試工具時(包括selenium,appium等),如果無統一模式進行規范,隨着用例的增加會變得越來越難以維護
而PageObject讓自動化腳本井井有序,將page大度維護並封裝細節,可以使testcase更文件,不需要大量的改動
使用:
具體做法:把元素信息和操作細節封裝到Page類中,在測試用例上調用Page對象
比如存在一個功能"選取相冊標題",需要為之簡歷函數selectAblumWithTitle(),函數內部是操作細節findElementsWithClass('album')等;
PageObject的主要原則是提供一個簡單的接口(或者函數),讓調用者在頁面上可以做任何的操作,點擊頁面元素,在輸入框輸入內容等待。
因此,如果要訪問一個文本字段,page object應該有獲取和返回字符串的方法。page object應該封裝對數據的操作細節,比如查找元素和點擊元素。
當頁面改動時,應該只改變page類中的內容,不需改變調用它的地方。不需要為每隔UI頁面都創建page類,應該只為頁面中重要的元素創建page類
page object的目的是通過給頁面建模,congress對應用程序的使用者變得更有意義。
PageObject原則:
簡介:
PageObject的核心思想是六大原則,掌握六大原則才可以進行pageobject實戰,這是精髓所在!
Selenium官方凝聚出六大原則,而后pageobject使用都將圍繞此進行開展:
1. 公共的方法代表也買你提供的服務
2. 不要暴露細節
3. 不要把斷言和操作細節混用
4. 方法可以return到新打開的頁面
5. 不要把整頁的內容都放到PO中
6. 相同的行為會產生不同的結果,可以封裝不同結果
具體分析:
原則一:要封裝頁面中的功能或服務,比如點擊頁面元素,可以進入到新的頁面,則可為這個服務封裝方法"進入新頁面"
原則二:封裝細節,對外只提供方法名(或者接口)
原則三:封裝的操作細節中不要使用斷言,把斷言放到單獨的模塊中,比如:testcase
原則四:點擊一個按鈕會開啟新的頁面,可以用return方法便是跳轉,比如return MainPage()表示跳轉到主頁
原則五:只為頁面中重要的元素進行PO設計,舍棄不重要的內容
原則六:一個動作可能產生不同結果,比如點擊按鈕后,可能成功,也可能失敗,為兩種結果封裝兩個方法:click_success和click_error
————————————————————————————————————————————————————————————————————