Sparkle CodesSparkle
项目 / APP测试

Appium 自动化入门:为什么要从线性脚本走向 POM 分层

x
xpx
Mar 09, 2025
Editorial Insight
#Appium#POM#测试开发#自动化测试

Appium 自动化入门:为什么要从线性脚本走向 POM 分层

系列导航

入口页:用 POM 分层、关键字封装和数据驱动搭建 Appium 自动化测试框架 下一篇:Appium 登录自动化:Page、Object 与 Module 的拆分实践

问题背景

刚开始做 App 自动化时,最自然的写法通常是线性脚本:打开应用、定位元素、点击、输入、断言,全部写在同一个文件里。这种方式上手快,但一旦场景变多,问题也会跟着出现:

  • 元素定位、操作步骤、断言逻辑混在一起;
  • 登录、搜索、跳页这些流程反复复制;
  • 一旦页面改版,需要在多处同步修改;
  • 用例变多后,几乎很难判断“哪个部分该改、哪个部分该复用”。

线性脚本的问题到底出在哪

线性脚本不是不能用,而是只适合两个前提:

  • 场景很少;
  • 代码只需要临时验证,不打算长期维护。

一旦测试目标变成下面这些,线性脚本就会开始吃力:

  • 同一个登录流程要被很多用例共用;
  • 一个输入框既要测正常输入,也要测空值、非法值、边界值;
  • 页面元素定位可能变化;
  • 测试数据不再只有一组;
  • 报告里需要清楚展示步骤和失败位置。

POM 在这里真正解决什么问题

这里说的 POM,不只是“Page Object Model”这个名词,更重要的是职责拆分思维。

当前这套材料把它拆成三层:

  • page:界面元素定位;
  • object:步骤函数或关键字封装;
  • module:测试流程组织和断言。

这种拆法的价值在于:

  • 页面定位变了,优先改 page;
  • 动作步骤变了,优先改 object;
  • 场景流程和断言变了,优先改 module;
  • 测试数据变了,尽量不改流程代码。

从脚本到框架,最小迁移路径是什么

刚开始整理自动化代码时,通常不需要先把整套框架搭完整。更自然的迁移顺序是:

  1. 先写线性脚本,确认自己能把流程跑通;
  2. 把元素定位抽到 Page 层;
  3. 把点击、输入、等待这类基础动作抽出来;
  4. 把登录、搜索这类完整业务步骤封成关键字;
  5. 再把 Excel 或 YAML 引进来做数据驱动和配置化。
Tip

很多初学者的问题不是“不会写框架”,而是太早想写框架。先把流程跑通,再做分层,学习曲线会平很多。

这套分层最适合什么场景

这套 page -> object -> module 结构特别适合这几类场景:

  • 登录、注册、搜索、表单填写这类重复性高的流程;
  • 需要多组测试数据反复执行的场景;
  • 需要把 UI 操作和断言拆开的用例;
  • 希望后续接入 Allure、Excel、YAML 的项目。

一个简单判断标准

如果当前的自动化代码已经出现以下现象,就基本可以开始做 POM 拆分了:

  • 同一个定位重复出现三次以上;
  • 同一个步骤顺序在多个用例里复制;
  • 新增异常场景时,要复制整段代码再改两行;
  • 已经开始分不清“这块是页面问题、动作问题还是断言问题”。

小结

线性脚本适合入门,POM 分层适合维护。真正值得学的,不只是分三个目录,而是学会把“元素、动作、流程、数据、断言”分开思考。

继续阅读:Appium 登录自动化:Page、Object 与 Module 的拆分实践

BACK TO BLOG
The End of Interaction