整理一下python selenium自動化測試實踐中使用較多的po設計模式。
為什么要用PO
基於python selenium2開始開始ui自動化測試腳本的編寫不是多么艱巨的任務。只需要定位到元素,執行對應元素的操作即可。
下面我們看一下這個簡單的腳本實現百度搜索。
從上述代碼來看,我們所能做的就是元素的定位,然后進行鍵盤輸入或鼠標動作。就這個小程序而已,維護起來看起來是很容易的。
但隨着時間的遷移,測試套件將持續的增長。腳本也將變的越來越多。如果我們需要維護10個頁面,100個頁面,甚至1000個呢?
那么頁面元素的任何改變都會讓我們的腳本維護變得繁瑣復雜,而且變得耗時易出錯。
那怎么解決呢?ui自動化中,常用的一種方式,引入Page Object(PO):頁面對象模式來解決,po能讓我們的測試代碼變得可讀
性更好,可維護性高,復用性高。
PO是什么:
1、頁面對象模型(PO)是一種設計模式,用來管理維護一組web元素的對象庫
2、在PO下,應用程序的每一個頁面都有一個對應的page class
3、每一個page class維護着該web頁的元素集和操作這些元素的方法
4、page class中的方法命名最好根據對應的業務場景進行,例如通常登錄后我們需要等待幾秒鍾,
我們可以這樣命名該方法:waitingForLoginSuccess()。
下面我們看下PO的代碼目錄組織示例:
PO的優勢
1、PO提供了一種業務流程與頁面元素操作分離的模式,這使得測試代碼變得更加清晰。
2、頁面對象與用例分離,使得我們更好的復用對象。
3、可復用的頁面方法代碼會變得更加優化
4、更加有效的命名方式使得我們更加清晰的知道方法所操作的UI元素。例如我們要回到首頁,
方法命名為:gotoHomePage(),通過方法名即可清晰的知道具體的功能實現。
PO實現示例
下面看下使用PO設計模式構建的百度搜索用例,先看下代碼組織結構如下:
#basePage.py代碼如下
#searchPage.py代碼如下
#testSearchPage.py代碼如下