Selenium Page Object别写成另一种面条代码
2022年8月记录,分类「自动化测试」。这篇更像工作笔记,记录的是一次问题拆解和复用清单。
问题不是分层
Page Object 很容易被写成另一种面条代码:所有元素和所有动作都塞进一个类,最后比裸 Selenium 还难读。我后来更关注页面对象到底有没有表达业务动作。
这类问题如果只写结论,过一段时间就很难复用,所以我把判断依据也留了下来。
页面对象怎么写
- 页面类只暴露用户能理解的动作,比如登录、提交、筛选。
- 定位器集中管理,但断言尽量放在用例或业务层。
- 重复弹窗、表格、上传组件单独拆组件对象。
class OrderPage:
submit_button = (By.CSS_SELECTOR, "[data-testid='submit-order']")
def submit(self):
self.driver.find_element(*self.submit_button).click()
评审时看什么
- 用例里不出现大段 find_element。
- 页面改版时只改定位和组件,不大面积改用例。
- 页面对象没有夹带跨页面业务流程。
如果要自动化,我会先挑稳定、关键、失败后能定位的部分,不急着全量脚本化。
我的取舍
Page Object 的目的不是多包一层,而是让自动化脚本读起来像业务流程。等业务规则再稳定一点,可以把这里的检查点拆成参数化用例。