頁面物件模型
頁面物件模型是一種模式,我們編寫物件導向的類,作為特定網頁檢視的介面。我們使用該頁面類的方法來執行所需的操作。幾年前,我們直接在測試類中操作網頁的 HTML 程式碼,這很難維護,而且 UI 的變化也很脆弱。
但是,以頁面物件模式的方式組織程式碼可以提供特定於應用程式的 API,允許你在不瀏覽 HTML 的情況下操作頁面元素。基本的 Rue of thumb 說,你的頁面物件應該包含人類在該網頁上可以做的所有事情。例如,要訪問網頁上的文字欄位,你應該在那裡獲取文字並在執行所有修改後返回字串。
在設計頁面物件時,你應該記住以下幾點:
-
頁面物件通常不應僅針對頁面構建,但你應該更喜歡為頁面的重要元素構建它。例如,具有多個選項卡以顯示學術界的不同圖表的頁面應具有與選項卡計數相同的頁數。
-
從一個檢視導航到另一個檢視應該返回頁面類的例項。
-
僅針對特定檢視或網頁所需的實用方法應僅屬於該頁面類。
-
斷言方法不應該由頁面類來處理,你可以有方法返回布林值,但不要在那裡驗證它們。例如,要驗證使用者全名,可以使用方法獲取布林值:
public boolean hasDisplayedUserFullName (String userFullName) { return driver.findElement(By.xpath("xpathExpressionUsingFullName")).isDisplayed(); }
-
如果你的網頁基於 iframe,則也希望擁有 iframe 的網頁類。
頁面物件模式的優點:
- 清除測試程式碼和頁面程式碼之間的分離
- 如果網頁的 UI 發生任何變化,則無需在多個位置更改程式碼。僅在頁面類中進行更改。
- 沒有分散的元素定位器。
- 使程式碼更容易理解
- 易於維護