1. Page Object 模式与 Screenplay 模式的对比,各自的适用场景和演进关系?
Page Object 模式与 Screenplay 模式如何对比?各自的适用场景和演进关系是什么?
- Page Object 与 Screenplay 的核心思想
- 二者的适用场景
- 演进关系
Page Object 模式(POM)把每个页面抽象为一个对象,封装该页的元素定位与操作,测试用例只调用页面方法,不直接接触定位器,从而复用元素定位、降低 UI 细节变更的影响。Screenplay 模式(基于 Actor 角色的模式)是 POM 的演进,进一步把"角色(Actor)、任务(Task)、动作(Interaction)、期望(Question)"分离:Actor 通过执行任务/动作来操纵页面,用 Question 断言状态。二者对比:POM 以"页面"为组织单元,简单直观、上手快,适合页面结构清晰、元素多、团队规模小、维护以页面为主的项目;Screenplay 以"业务能力"为组织单元,更贴近业务语言、可复用性更强、更能表达复杂用户流程,适合大型复杂系统、需要跨平台复用、多角色多步骤的团队,但概念更重、学习成本高。演进关系:Screenplay 是在 POM 表达能力不足时自然的演进——POM 侧重"页面对象",Screenplay 侧重"业务行为",可视为 POM 的面向行为/角色的升级。小项目用 POM 足够,复杂项目可演进到 Screenplay。
选择的关键是"组织单元"与"表达层次"。POM 面向页面,Screenplay 面向行为;当测试需要表达"用户如何完成任务"而非"页面有哪些元素"时,Screenplay 更合适,但需权衡其学习成本。