1. 程式人生 > 其它 >Python Selenium設計模式 - PO設計模式

Python Selenium設計模式 - PO設計模式

整理一下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程式碼如下