项目背景
被测系统:B 站 Web 端(动态渲染的现代前端应用)。
要解决的问题:UI 自动化最怕两件事 ——
- 页面改版就全崩:元素定位写死在用例里,页面一改,几十条用例一起红;
- 动态渲染导致的假失败:元素还没渲染出来就去点,报错但其实是等待策略没写对。
所以这个项目的重点是把定位与用例解耦,并把等待策略做成框架能力而不是每条用例自己写。
当前成果:全量执行通过率 100%;失败自动截图并接入 Allure 报告,保留失败现场。 项目状态:优化中,正在扩充用例覆盖范围。
技术栈
| 类别 | 选型 |
|---|---|
| 语言 | Java |
| 浏览器驱动 | Selenium WebDriver |
| 测试框架 | TestNG |
| 设计模式 | Page Object |
| 测试报告 | Allure |
| 版本管理 | Git(GitHub / Gitee) |
架构设计
Page Object 分层框架:
BasePage 统一封装元素定位、显式等待与常用操作,页面类只描述”这个页面有什么元素、能做什么事”,
用例层只描述”我要验证什么”。
分层职责:
├── BasePage # 元素定位、显式等待、常用操作的统一封装
├── XxxPage # 具体页面:元素定位器 + 页面行为方法
└── XxxTest # 用例层:业务意图与断言
关键设计:
-
用例与页面元素解耦 —— 页面改版仅需维护定位层,用例层零改动。 这是 Page Object 的核心价值,也是”能维护”和”三个月后没人敢动”的分界线。
-
定位策略:显式等待 + CSS 优先 XPath 兜底 —— 针对 B 站动态渲染与登录风控, 将用例范围约束在无需登录即可稳定执行的流程上。 CSS 选择器优先是因为它比 XPath 更稳定、更快,XPath 只作兜底。
-
失败自动截图接入 Allure —— 失败现场被保留下来, 排查时能直接看到当时的页面状态,而不是只有一行报错。
用例覆盖
- 首页加载
- 关键词搜索(阳性 / 阴性双侧验证)
- 结果页跳转
- 视频详情
- 新窗口句柄切换
后续规划
- 扩充用例覆盖范围(当前聚焦核心流程)
- 接入 Jenkins CI,实现定时回归
- 补充数据驱动,参数化搜索关键词用例
项目声明
本项目为个人独立项目,架构设计、编码实现、用例执行与文档撰写均由本人独立完成。