1. 程式人生 > >selenium之POM模式的實現

selenium之POM模式的實現

selenium 問題 支持 包括 model 表單 代碼量 有意 home

POM是Page Object Model的縮寫,中文意思是頁面對象模型,POM是通過分離測試對象和測試腳本來實現的。

POM主要有以下優點:

1. 把web ui對象從測試腳本分離,代碼和測試腳本分離。

2. 每一個頁面對應一個頁面類,頁面的元素寫到這個頁面類中。

3. 頁面類主要包括該頁面的元素定位,和這些元素相關的操作代碼封裝的方法。

4. 代碼復用,從而減少測試腳本代碼量。

5. 層次清晰,同時支持多個編寫自動化腳本開發。

6. 頁面類和邏輯方法都起一個有意義的名稱,方便他人快速編寫腳本和維護腳本。

通過一個例子來看下POM的實現:

下面以登錄QQ郵箱為例的線性腳本:

技術分享圖片

這個用例只操作5個元素,就暴露出來了一些代碼冗余和可讀性的問題。如果有更多功能,那麽用例代碼更加厚重,可讀性也是大大降低,我們需要對此代碼進行優化,通過POM來實現。 首先,我們要分離測試對象和測試腳本,我們分別創建四個腳本文件,basePage.py用於初始化頁面屬性,打開瀏覽器,定義查找元素的方式,homePage.py用於定義被測網址首頁未登錄前的操作,定義登錄按鈕和表單的定位方式,loginPage.py 用於定義頁面元素對象,每一個元素都封裝成函數,login_test.py 測試用例腳本。元素的操作方法定義在Page頁面,用例腳本通過調用Page中的函數來實現郵箱的登錄。把上述4個腳本放在同級目錄的不同的文件夾下,如下: 技術分享圖片
basePage.py的代碼如下: 技術分享圖片 homePage.py的代碼如下: 技術分享圖片

loginPage.py的代碼如下:

技術分享圖片

login_test.py測試用例代碼如下:

技術分享圖片

通過使用POM進行重新構造代碼結構後,測試用例代碼的可讀性提高很多,元素寫成函數的方式,不需要每次都寫find_element,直接在腳本中調用函數就可以使用。這種方式方便對腳本進行後期的維護管理,當元素屬性發生變化時,我們只需要對一個頁面中的函數定義進行更改即可。

selenium之POM模式的實現