UI 自动化与 Page Object 模式

共 19 题
#

1. Page Object 模式与 Screenplay 模式的对比,各自的适用场景和演进关系?

A Screenplay 以页面为组织单元,POM 以业务行为为组织单元
B Screenplay 比 POM 更简单
C POM 面向页面,Screenplay 面向业务行为,是 POM 的面向行为演进 ✓ 正确答案
D 两者完全等价
#

2. Page Object 模式的核心原则,页面封装、元素定位与断言分离,为什么能降低用例维护成本?

A 每个用例都直接写定位器更灵活
B 页面封装、定位与断言分离,把 UI 变更局部化到 Page Object,从而降低维护成本 ✓ 正确答案
C 断言应写在 Page 内部
D POM 与用例维护成本无关
#

3. Page Object 中如何处理组件复用(如 Header/Footer/Navigation)?

A 公共组件应抽象为独立组件类,Page 通过组合持有,并基于根元素相对定位实现复用 ✓ 正确答案
B 每个 Page 都应重复封装 Header 的定位器
C 组件不能跨页面复用
D 组件应包含断言逻辑
#

4. 定位器的稳定性 vs 表达力的取舍?

A 优先稳定性,用 data-testid/语义 CSS,慎用绝对 XPath 与依赖顺序的定位 ✓ 正确答案
B 绝对 XPath 最有表达力,应优先使用
C 表达力是唯一考量
D 稳定性与表达力总是可兼得
#

5. "测试 ID"如何与开发约定对齐?

A 通过命名规范、职责解耦、评审清单与 CI 检查,把测试 ID 固化为测试与开发的契约 ✓ 正确答案
B 测试 ID 应由测试单方面随意命名
C 测试 ID 应承载样式逻辑
D 删除测试 ID 无需同步测试
#

6. UI 自动化的稳定性,隐式/显式等待、动态元素定位(xpath/css 策略)、网络波动下的重试如何设计?

A 固定 sleep 越久越稳定
B 网络重试应无限次
C 用显式/自动等待、语义锚点定位,并对可重试的网络波动做有限退避重试 ✓ 正确答案
D 动态元素只能用索引定位
#

7. UI 自动化的数据准备与清理,测试数据工厂、接口造数 vs UI 造数、用例隔离如何保证可重复执行?

A 数据准备应优先用 UI 造数
B 用数据工厂统一造数、接口造数优先、用例级隔离与清理,保证可重复执行 ✓ 正确答案
C 数据清理无需考虑
D 用例间共享数据更高效
#

8. UI 自动化的数据驱动与关键字驱动框架对比,各自在维护成本、上手难度与业务可读性上的取舍?

A 关键字驱动比数据驱动更需编程
B 数据驱动抽数据、逻辑贴近代码;关键字驱动抽操作、表格化、低代码但规模大时维护复杂 ✓ 正确答案
C 两者完全等价
D 数据驱动业务可读性最好
#

9. 多端 UI 自动化(Web/App/小程序)的统一框架设计,如何抽象公共操作层、差异化处理各端定位与等待?

A 各端应各自维护一套完全独立的用例
B 业务用例里应写 if 分端处理
C 各端驱动完全相同
D 抽象公共操作层统一接口,用平台适配器隔离各端定位与等待差异,业务用例一份多端复用 ✓ 正确答案
#

10. UI 自动化的可观测性,失败时如何自动归档截图、DOM 快照、网络日志与视频,如何用这些证据快速定位环境问题 vs 代码问题?

A 只需记录失败信息即可
B 证据无需带元数据
C 视频归档没有必要
D 自动归档截图、DOM 快照、网络日志与视频,交叉证据快速区分环境问题与代码问题 ✓ 正确答案
#

11. UI 自动化的执行策略,用例分级(冒烟/回归/全量)、并行执行与分片(shard),流水线中如何平衡执行时间与稳定性?

A 并行执行无需隔离
B 所有用例每次提交都跑全量最稳妥
C 分片越均匀越难
D 分级控制反馈粒度、并行与动态分片控制时长,并隔离 flaky 用例以平衡时间与稳定性 ✓ 正确答案
#

12. Page Object 中的异步状态处理,加载态/骨架屏/轮询刷新如何封装为稳定的等待语义,避免用例在常见异步 UI 上不稳定?

A 用固定 sleep 等待异步加载最稳定
B 异步 UI 只能 case by case 处理
C 把加载态/骨架屏/轮询封装为"等待业务终态"的语义化等待,避免固定时延 ✓ 正确答案
D 等待越久越稳定
#

13. Page Object 的粒度把握,一个页面对应一个 Page Object 还是按功能区域拆分?

A 每个按钮都要拆成独立 Page
B 所有页面都必须拆成最小粒度
C 简单页面一个 Page,复杂页面按功能区域拆分,以可维护、可复用、边界清晰为准 ✓ 正确答案
D 页面粒度与可维护性无关
#

14. POM 与 DRY 的边界?

A DRY 应不惜代价消灭所有重复
B 完全不复用代码最好
C 所有相似代码都应合并
D POM 封装页面内重复定位与操作,但只复用语义一致且确定重复的逻辑,避免过度抽象 ✓ 正确答案
#

15. UI 自动化与手工测试的分工,什么场景适合自动化(回归/冒烟)、什么场景必须手工(视觉/探索)?

A 回归/冒烟等重复稳定场景适合自动化,视觉/探索等主观场景必须手工,两者互补 ✓ 正确答案
B 手工测试只测 bug
C 探索性测试最适合自动化
D 自动化应完全替代手工测试
#

16. UI 自动化 vs 接口自动化,投入产出?

A UI 自动化投入产出比更高
B 接口自动化投入产出比高、稳定,UI 自动化聚焦核心端到端流程,接口为主 UI 为辅 ✓ 正确答案
C 二者投入产出完全相等
D 接口自动化覆盖不到后端逻辑
#

17. UI 自动化的断言设计,行为断言(状态/文本)与视觉断言(截图)如何按场景选择,避免断言过弱或过脆?

A 断言元素存在即可,最稳定
B 视觉断言应全图精确匹配
C 断言越细越好
D 默认行为断言(业务结果),视觉断言按需,并设置容差,避免过弱或过脆 ✓ 正确答案
#

18. UI 自动化中的系统级交互处理,文件上传下载、剪贴板、系统弹窗、多窗口的封装与稳定性策略?

A 文件上传应依赖系统文件对话框
B 系统弹窗无法自动化
C 多窗口无需管理
D 用 input 送文件路径、预注册弹窗监听、等待下载完成信号,统一封装系统级交互 ✓ 正确答案
#

19. Page Object 与 Shadow DOM/Web Component 的适配,如何定位自定义元素内部节点并保持用例稳定?

A open 与 closed shadow 都可直接外部定位
B Shadow DOM 元素无法定位
C 用自动 pierce/JS 穿透 shadow root,把穿透细节封装在 Page 内并用稳定属性锚定,保持稳定 ✓ 正确答案
D 内部节点只能用绝对路径