Selenium Page Object别写成另一种面条代码

发表评论 1906 浏览量
目录:

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 的目的不是多包一层,而是让自动化脚本读起来像业务流程。等业务规则再稳定一点,可以把这里的检查点拆成参数化用例。