
1. 什么是 Page Object 模式
Page Object 模式 是一种常用的 UI 自动化测试设计模式。
核心思想是:
把页面当作对象
把页面上的元素和操作封装到一个类(对象)里
测试用例只调用这些方法,不直接操作页面元素
这样可以让测试用例更简洁、可维护,也更符合 面向对象编程 思想。
2. 为什么要用 Page Object
如果没有 PO 模式,测试代码通常会充满冗余的 定位符 和 操作,一旦页面改动,需要修改所有用例。
比如(不使用 PO):
# Selenium 例子
driver.find_element(By.ID, "username").send_keys("user1")
driver.find_element(By.ID, "password").send_keys("psw1")
driver.find_element(By.ID, "login").click()如果 "username" 改成 "userName",可能要修改很多测试文件。
使用 Page Object:
# page_login.py
from selenium.webdriver.common.by import By
class LoginPage:
def __init__(self, driver):
self.driver = driver
self.username_input = (By.ID, "username")
self.password_input = (By.ID, "password")
self.login_button = (By.ID, "login")
def login(self, username, password):
self.driver.find_element(*self.username_input).send_keys(username)
self.driver.find_element(*self.password_input).send_keys(password)
self.driver.find_element(*self.login_button).click()测试用例里只需要写:
# test_login.py
login_page = LoginPage(driver)
login_page.login("user1", "psw1")页面结构变了,只需改 LoginPage 类,不用改所有测试用例。
3. Page Object 的优点
可维护性高:页面元素集中管理,修改方便。
可复用性强:多个测试用例可共享相同的 PO 类。
提高可读性:测试代码更接近业务逻辑。
用例看起来像“登录操作”,而不是一堆
find_element。
减少冗余:避免重复的定位与操作代码。
4.总结
Page Object 模式 = 页面类 + 元素定位 + 页面操作方法
作用:解耦测试逻辑与页面结构,让测试更清晰、可维护。
场景:前端 UI 自动化测试(Web:Selenium,移动端:Appium,甚至 Playwright、Cypress 也能借鉴)。