自動化測試 - Page Object Pattern 的使用與範例
Page Object 是一個撰寫 UI 自動化測試,經常使用的一種設計模式 (Design Pattern),透過將網頁元素抽象化成元件的實作方式,讓你可以更有效的管理和組織你的測試程式碼,讓我們看看下面這個例子。

元件介紹
- Login Test 和 Search Test 表示針對 Login 和 Search 頁面的測試,在登入相關的測試案例之中,我們需要執行登入的相關動作。
- LoginPage / HomePage / Search Page 都表示各頁面的動作,以登入頁面為例,在登入頁面上,可以按下登入按鈕或是回到首頁按鈕。
程式碼實作
class LoginPage:
def init(self, page):
self.page = page
def login(self):
self.page.fill("#username", "user")
self.page.fill("#password", "pass")
self.page.click("#login")
def clickHomeButton(self):
self.page.click("#home")
LoginPage.py
class HomePage:
def __init__(self, page):
self.page = page
def clickSignIn(self):
self.page.click("#signIn")
def search(self, query):
self.page.fill("#search", query)
self.page.click("#searchButton")
HomePage.py
class SearchPage:
def __init__(self, page):
self.page = page
def getSearchName(self):
return self.page.text_content("#searchResult")
SearchPage.py
def test_verify_login(page):
login_page = LoginPage(page)
home_page = HomePage(page)
search_page = SearchPage(page)
login_page.login()
login_page.clickHomeButton()
# 驗證登入後的操作
LoginTest.py
def test_verify_search(page):
home_page = HomePage(page)
search_page = SearchPage(page)
home_page.clickSignIn()
home_page.search("test")
# 驗證搜尋結果
SearchTest.py
結論
這樣的設計模式能夠讓您的測試程式碼更加乾淨、有條理,並且便於維護。如果需要調整某個頁面的操作,只需修改對應的 Page 物件即可,無需改動所有相關的測試用例。
如果你對於自動化測試有興趣,請訂閱我的部落格,可以獲得最新的文章。