跳到主要内容
2026.09 – 至今 进行中 独立开发

B 站 Web 端 · UI 自动化测试

以 B 站 Web 端为被测对象,构建 UI 自动化测试工程。采用「显式等待 + CSS 优先 XPath 兜底」的定位策略应对动态渲染与登录风控,实现失败自动截图并接入 Allure 报告,保留失败现场。

项目仍在优化中 —— 正在补充用例覆盖范围与 CI 集成,完成后再更新此页。

  • Java
  • Selenium WebDriver
  • TestNG
  • Page Object
  • Allure
100%
全量执行通过率
解耦
用例与页面元素分离
自动截图
失败现场接入 Allure

TL;DR · 30 秒看懂

不是"会写 Selenium",而是把 UI 用例做到页面改版不用重写。

  • 基于 Page Object 分层,BasePage 统一封装定位与显式等待,用例与页面元素彻底解耦
  • 针对动态渲染与登录风控,采用「显式等待 + CSS 优先、XPath 兜底」策略,消除元素未就绪导致的偶发失败
  • 覆盖首页加载、关键词搜索(阳性/阴性双侧)、结果页跳转、新窗口句柄切换等核心用例,全量通过率 100%
  • 失败自动截图接入 Allure 报告,保留失败现场,缩短定位路径

想验证?去哪儿看

所有数字与结论都能在以上来源中核对。

项目背景

被测系统:B 站 Web 端(动态渲染的现代前端应用)。

要解决的问题:UI 自动化最怕两件事 ——

  1. 页面改版就全崩:元素定位写死在用例里,页面一改,几十条用例一起红;
  2. 动态渲染导致的假失败:元素还没渲染出来就去点,报错但其实是等待策略没写对。

所以这个项目的重点是把定位与用例解耦,并把等待策略做成框架能力而不是每条用例自己写。

当前成果:全量执行通过率 100%;失败自动截图并接入 Allure 报告,保留失败现场。 项目状态:优化中,正在扩充用例覆盖范围。

技术栈

类别选型
语言Java
浏览器驱动Selenium WebDriver
测试框架TestNG
设计模式Page Object
测试报告Allure
版本管理Git(GitHub / Gitee)

架构设计

Page Object 分层框架:

BasePage 统一封装元素定位、显式等待与常用操作,页面类只描述”这个页面有什么元素、能做什么事”, 用例层只描述”我要验证什么”。

分层职责:
├── BasePage            # 元素定位、显式等待、常用操作的统一封装
├── XxxPage             # 具体页面:元素定位器 + 页面行为方法
└── XxxTest             # 用例层:业务意图与断言

关键设计:

  1. 用例与页面元素解耦 —— 页面改版仅需维护定位层,用例层零改动。 这是 Page Object 的核心价值,也是”能维护”和”三个月后没人敢动”的分界线。

  2. 定位策略:显式等待 + CSS 优先 XPath 兜底 —— 针对 B 站动态渲染与登录风控, 将用例范围约束在无需登录即可稳定执行的流程上。 CSS 选择器优先是因为它比 XPath 更稳定、更快,XPath 只作兜底。

  3. 失败自动截图接入 Allure —— 失败现场被保留下来, 排查时能直接看到当时的页面状态,而不是只有一行报错。

用例覆盖

  • 首页加载
  • 关键词搜索(阳性 / 阴性双侧验证)
  • 结果页跳转
  • 视频详情
  • 新窗口句柄切换

后续规划

  • 扩充用例覆盖范围(当前聚焦核心流程)
  • 接入 Jenkins CI,实现定时回归
  • 补充数据驱动,参数化搜索关键词用例

项目声明

本项目为个人独立项目,架构设计、编码实现、用例执行与文档撰写均由本人独立完成。

简历预览 · 刘德啉

正在载入简历…

按 Esc 关闭 · 手机上若无法显示,请点「新窗口打开」