AI 测试提效 | 别搞万能 Skill,推荐用 5 个 Agent Skill 串起 UI 自动化全流程

做过 UI 自动化的团队,几乎都经历过这个死循环:

  • 抓元素,打开 DevTools 逐个复制 XPath,一个页面几十上百个元素,抓到眼花。
  • 写脚本,从零搭 POM 类、写用例、造数据,一行行敲,一敲就是几天。
  • 跑通了,勉强能 demo,一上 CI 环境就各种挂------超时、弹窗、异步加载、iframe 切不进去。
  • 前端改版了,元素属性变了、组件替换了,之前的定位策略大面积失效。
  • 修脚本,修完这轮,下轮改版继续挂。

写脚本 3 天,修脚本 2 周。

这就是 UI 自动化的现实。它也是整个测试体系中,最「脆弱」、最「烧钱」、也最需要 AI 赋能的环节。

那能不能用 Agent Skill,把 UI 自动化从页面解析到脚本维护的整条链路,全部串起来?

答案是,可以。而且效果比你想象的好得多。

核心思路就一句话,AI 负责解析、生成、增强和维护,人负责校验和决策。

但这里有一个关键问题,不能搞「万能 Skill」,要按职责拆成「专业 Skill」。

这篇文章,就带你完整看清楚,一套 4+1 个 Agent Skill 是怎么串起 UI 自动化全流程的。

一、UI 自动化的痛,远不止抓元素

很多团队一提到 UI 自动化的痛点,第一反应就是「抓元素慢」。但实际上,抓元素只是冰山一角。

从页面解析到脚本维护,UI 自动化的每一个环节都有让人崩溃的地方:

环节 痛点 典型表现
页面解析 人工逐个抓元素,慢且遗漏多 一个页面 100+ 元素,逐个检查属性、复制定位,3 天搞不完
脚本编写 POM + 用例 + 数据,从零手写 页面对象类、测试用例、测试数据全靠人工编写,效率极低
脚本执行 缺等待、缺异常处理,总挂 demo 级脚本能跑,上 CI 就挂------超时、弹窗、iframe、偶发失败
视觉验证 DOM 断言测不出样式问题 元素在、文本对,但布局错位、样式崩塌,断言全部通过
长期维护 前端改版,脚本大面积失效 元素属性变了、组件替换了,之前的定位策略全部报废
团队协作 每个人风格不同,质量参差不齐 抓元素方式、定位策略、命名规范各写各的,维护成本极高

这六个环节的痛点,单靠一个 Skill 解决不了。

很多新手容易踩的坑:想做一个「万能 Skill」,输入一个页面 URL,直接输出完美脚本。一个技能包揽页面解析、元素定位、脚本生成、视觉断言、执行维护,结果逻辑臃肿、维护困难、扩展受限。

正确的做法是,按职责拆分,每个 Skill 只做一件事,做到极致。

二、4+1 Skill 全流程架构

先看全貌。整套 UI 自动化的 AI 赋能链路,由 4 个核心 Skill + 1 个可选 Skill 组成,形成完整闭环(其实当前不算整套闭环,还有执行、自愈、报告生成等7个核心 skill 还没讲):

Skill 核心职责 解决什么痛点
ui-page-parser 页面元素结构化解析 人工逐个抓取元素慢、定位脆弱、页面信息不标准
ui-testscript-generator UI 测试脚本批量生成 人工编码慢、POM 规范难落地、定位策略不统一
ui-testscript-enhancer 脚本健壮性增强 缺少等待机制、异常处理、弹窗拦截、失败截图
ui-visual-assert 视觉断言与多浏览器适配 DOM 断言不够、多浏览器兼容成本高
ui-auto-maintainer(可选) 智能维护与自愈 页面变更导致脚本失效、维护成本高

这几个 Skill 形成完整闭环: 解析 → 生成 → 增强 → 适配 → 维护,既能串联使用,也能独立调用。

bash 复制代码
页面 URL / DOM 结构 / 用例描述
  │
  ▼
ui-page-parser ──→ 标准化页面对象定义 (pages.yaml)
  │
  ├──→ ui-testscript-generator ──→ POM 类 + 测试脚本 + 测试数据
  │         │
  │         ▼
  │   ui-testscript-enhancer ──→ 健壮性增强(等待+异常+弹窗+验证码+截图)
  │         │
  │         ▼
  │   ui-visual-assert ──→ 视觉断言 + 响应式适配 + 多浏览器兼容
  │         │
  │         ▼
  │   ui-auto-maintainer ──→ 页面变更检测 + 定位自愈 + 基线更新
  │
  └──→ pages.yaml 也可直接用于前端组件文档生成、无障碍审计

为什么这么拆?

三个原则:

  1. 单一职责:每个 Skill 只做一类核心动作(解析、生成、增强、适配、维护),避免功能耦合。
  2. 闭环衔接:前一个 Skill 的输出是后一个 Skill 的输入,形成完整的自动化链路。
  3. 灵活复用 :每个 Skill 都能独立调用。比如你只想梳理页面元素,单独用 ui-page-parser 就行;只想增强脚本健壮性,单独用 ui-testscript-enhancer 也行。

接下来,逐个拆清楚每个 Skill 的定位和作用。

三、逐个拆解:每个 Skill 的定位与作用

Skill 1:ui-page-parser --- 页面元素结构化解析

定位:UI 数据预处理 Skill,整条链路的地基。

所有后续的脚本生成、增强、视觉断言,都依赖这一步的输出。解析不准,后面全部不可靠。

它解决什么问题?

传统模式下,测试工程师需要打开浏览器 DevTools,逐个检查元素属性、复制 XPath / CSS Selector、分析页面加载时序、梳理交互流程。面对现代前端框架构建的单页应用,元素的动态生成和异步加载让这个过程格外痛苦。

让人工梳理一个 20 个页面的系统,每个页面平均 100 个可交互元素,可能需要 3-5 天,还容易遗漏动态元素、iframe 嵌套、Shadow DOM。

核心能力:

  • 全站自动遍历:从一个入口 URL 出发,基于 BFS 爬虫机制自动发现并抓取全站页面,不需要逐个提供 URL
  • 认证页面解析:通过 CDP 连接复用登录态,解析需要登录才能访问的页面
  • 智能定位策略推导 :按优先级自动推导最稳定的定位策略(data-testid > 语义化定位 > CSS > XPath)
  • 页面元素结构化提取:元素名称、类型、交互方式、等待条件、关联校验
  • 交互链路解析:主流程步骤、异常分支、页面状态迁移
  • 隐性规则识别:弹窗触发条件、异步加载模式、iframe 嵌套关系
  • 自动截图归档:每个页面抓取时自动保存截图,方便核对

输入:

  • 页面 URL(自动抓取 DOM)
  • 页面 HTML/DOM 结构文件
  • 前端组件源码(React/Vue/Angular)
  • 自然语言用例描述(AI 推断页面结构)

输出:

标准化的 pages.yaml,包含每个页面的基本信息、元素清单(含多级定位策略)、交互链路、页面状态。

核心价值:

替代人工逐个抓取元素、分析页面结构,把数小时甚至数天的体力劳动压缩到几分钟。解析逻辑本身重复且专业,单独封装成独立 Skill,既作为后续所有 Skill 的标准输入,也可被非测试场景复用(如前端组件文档生成、无障碍审计)。

Skill 2:ui-testscript-generator --- 页面对象与测试脚本批量生成

定位:基于结构化页面定义,一次性批量生成 POM 类、测试脚本、定位策略和测试数据。

它解决什么问题?

pages.yaml 拿到手了,但要把这些结构化的页面定义变成真正能跑的测试脚本,传统方式下还是得人工从零编写 POM 类、逐条编写用例、逐条构造测试数据。一个登录页可能还好,但如果是 20 个页面、每个页面几十个元素、每个元素要覆盖正向/边界/异常/安全多种场景,这个工作量是爆炸的。

核心能力:

  • 测试数据智能构造:基于页面表单字段定义,自动生成正向数据、边界值数据、非法格式数据、空值/缺失数据、SQL 注入/XSS 数据、超长/超量数据、业务规则冲突数据
  • POM 类自动生成:每个页面对应一个 POM 类,封装元素定位与业务操作方法,自动处理动态 ID、iframe 嵌套、Shadow DOM
  • 智能定位策略落地 :优先 data-testid,其次语义化定位(getByRole/getByLabel/getByText),兜底 CSS Selector,禁止长 XPath
  • 测试用例自动生成:按场景分类(Normal/Exception/Boundary/Security),自动绑定测试数据,自动补充多维度断言
  • 标准化逻辑补全:智能等待、异常处理、失败截图、Allure 注解

一个关键设计决策:数据生成与脚本生成合并

UI 测试的数据构造与脚本编写高度耦合------同一表单字段的测试数据直接驱动对应的页面操作步骤。因此将两者合并为一个综合 Skill,比拆分为独立 Skill 更符合 UI 自动化的实际工作流。用户只需输入页面定义,一步拿到完整可运行的项目。

输入:

  1. ui-page-parser 输出的 pages.yaml
  2. 团队 UI 框架规范(框架选型、目录结构、定位策略优先级、等待机制、断言策略)
  3. 测试数据规则(可选,用于自定义数据构造规则)

输出:

  • pages/ 层:页面对象类(如 LoginPage.ts / LoginPage.py
  • testcases/ 层:测试用例脚本(如 test_login.spec.ts / test_login.py
  • data/ 层:测试数据文件(YAML/JSON)

核心价值:

替代人工从零编写 POM 和用例,一步完成「数据 + 页面 + 用例」的全量产出。特别适合快速落地、小型项目、新手入门,上手更快、操作更简单、一步生成即用。

Skill 3:ui-testscript-enhancer --- 脚本健壮性增强

定位:对基础脚本进行自动化增强,让脚本从「demo 级」进化为「生产级」。

它解决什么问题?

ui-testscript-generator 生成的脚本,结构规范、用例完整,但缺少生产环境必需的健壮性逻辑。具体来说就是:没有智能等待(或硬编码 sleep)、没有弹窗拦截、没有 iframe 自动切换、没有异常重试、没有失败追溯、验证码直接拦死。

demo 级脚本能跑通,一上 CI 环境就各种挂。

核心能力(六大增强维度):

增强维度 解决什么问题
智能等待补全 替换硬编码 sleep,自动补充页面加载等待、元素可见性等待、Ajax 异步等待、动画过渡等待、元素状态变更等待
弹窗与干扰处理 自动检测意外弹窗(广告、权限申请)→ 尝试关闭 → 继续执行;Toast 消息自动捕获与断言
iframe/Shadow DOM 处理 自动识别 iframe 嵌套 → 切换上下文 → 定位内部元素;Shadow DOM 穿透定位
异常重试与容错 元素未找到自动重试 3 次 → 截图存档 → 记录日志;页面崩溃自动刷新恢复;网络超时自动重试
失败追溯增强 自动截图(失败时全页截图)、自动录屏(Trace 文件)、自动记录网络请求日志
登录验证码识别 图形验证码、滑动验证码、文字点选验证码、计算题验证码,自动识别并处理

输入:

  • ui-testscript-generator 输出的基础 UI 脚本
  • 页面交互规则和特殊处理需求(验证码类型、异步加载模式、弹窗触发条件、iframe 结构)

输出:

增强后的 UI 自动化测试脚本 + 增强配置文件(如 enhanced_base_page.py,封装了所有增强逻辑的基类)。

核心价值:

过滤 AI 生成脚本的「脆弱」问题。一个 @retry_on_failure 装饰器就能让失败的用例自动重试,一个 ddddocr 集成就能让验证码不再拦截自动化流程。脚本不再只是「能跑」,而是「跑得稳」。

Skill 4:ui-visual-assert --- 视觉断言与多浏览器适配

定位:为 UI 脚本添加视觉断言能力,实现跨浏览器、跨分辨率的兼容性验证。

它解决什么问题?

传统的 DOM 断言只能验证「元素在不在」「文本对不对」,但测不出「页面看起来对不对」。元素存在、文本正确,但布局错位、颜色不对、响应式崩塌,DOM 断言照样全部通过。

更麻烦的是多浏览器兼容。同一套脚本在 Chromium 跑得好好的,换 Firefox 点击坐标偏移,换 WebKit 样式渲染不一致,适配成本爆炸。

核心能力(三大维度):

维度一,视觉断言。

  • 全页截图对比:将当前页面截图与基线图片进行像素级比对,自动识别视觉差异
  • 局部元素截图对比:针对特定组件(如导航栏、卡片、表单)单独截图比对
  • 动态区域忽略:自动识别时间戳、随机数、广告位等动态内容,设为忽略区域
  • 像素差异阈值:可配置容差,避免亚像素级别的渲染差异导致误报

维度二,响应式适配。

  • 自动生成多分辨率测试配置(桌面端 1920×1080、平板 768×1024、移动端 375×667)
  • 验证不同视口下的布局一致性
  • 自动检测响应式断点处的布局偏移

维度三,多浏览器兼容。

  • 同一脚本适配 Chromium / Firefox / WebKit 三大引擎
  • 自动处理浏览器兼容性差异(如 Firefox 的点击偏移、WebKit 的 CSS 渲染差异)
  • 每个浏览器 × 每个视口独立维护基线图片,避免跨浏览器渲染差异导致的误报

输入:

  • ui-testscript-enhancer 输出的增强脚本
  • 视觉基线图片(可选,首次运行时自动生成)

输出:

含视觉断言的跨浏览器测试脚本 + 基线图片库 + 差异对比报告。

核心价值:

超越传统 DOM 断言,实现「页面看起来对不对」的智能验证。不再需要人肉肉眼去逐个浏览器、逐个分辨率检查,Skill 自动跑完所有组合,输出差异报告。

Skill 5(可选):ui-auto-maintainer --- 智能维护与自愈

定位:长期运维 Skill,负责页面变更感知、定位策略自动修复、视觉基线更新。

它解决什么问题?

UI 自动化的头号杀手不是技术难度,而是维护成本。前端改版是常态------元素属性变了、布局重构了、组件替换了,之前的定位策略全部失效。如果不做维护,脚本很快就会沦为「一次性工程」。

传统模式下,维护全靠人工:定期跑脚本 → 发现大面积失败 → 逐个排查 → 手动修复定位 → 更新基线。这个循环一旦转起来,维护工作量会越来越大,最终压垮整个自动化项目。

核心能力:

  • 页面变更检测:定时抓取最新页面 DOM,diff 对比识别变更点(元素属性变更、布局重构、组件替换)
  • 定位策略自愈:基于视觉相似度和语义匹配,自动修复失效的元素定位,更新 POM 类中的定位代码
  • 视觉基线更新:识别有意的 UI 改版(vs 无意的视觉 bug),自动更新截图基线,减少误报
  • 失败根因分析:自动分析失败截图、Trace 日志、网络请求,区分「页面变更 / 脚本问题 / 真实缺陷」,生成修复建议

输入:

  • 历史脚本 + 最新页面结构(定时抓取)
  • 失败日志与截图

输出:

  • 更新后的脚本 + 维护报告
  • 变更通知 + 修复建议清单

核心价值:

解决 UI 自动化「维护成本高」的终极痛点。前端改版后,不再需要人工逐个排查失效脚本,Skill 自动检测变更、自动修复定位、自动更新基线,实现可持续运营。

四、除了 4+1 核心架构,还可以按需扩展

上面的 4+1 Skill 覆盖了 UI 自动化测试的核心闭环。如果你的团队有特殊场景需求,还可以在这套基础上补充:

扩展 Skill 核心职责 适用场景
跨端适配 Skill 专门处理 Web / H5 / 小程序的脚本迁移与适配 多端业务线,需要一套脚本覆盖多端
性能测试联动 Skill 基于 UI 脚本自动生成 Lighthouse 性能测试配置 前端性能监控,CI 流水线自动跑性能回归
无障碍测试 Skill 基于 POM 自动生成 axe-core 无障碍审计脚本 合规要求、信息无障碍标准落地

核心原则:先落地前四个最核心的 Skill 实现闭环,再根据团队实际场景扩展,避免过度设计。

五、全流程串联回顾

把整条链路用命令行风格串起来,就是这样的:

bash 复制代码
# 1. 启动解析(一个入口 URL,全站自动遍历)
/ui-page-parser 请抓取 http://localhost:3000/ 的全站页面

# 2. 第一站:页面解析
   ├─ BFS 爬虫遍历全站 → 发现全部页面
   ├─ 需要认证?→ 启动 Chrome,CDP 复用登录态
   ├─ 逐页提取元素 → 每个页面生成结构化定义
   ├─ 自动截图 → 每个页面保存可视化快照
   └─ 输出 pages.yaml ← 标准化页面对象定义

# 3. 第二站:脚本生成
   └─ pages.yaml → ui-testscript-generator
      ├─ 测试数据智能构造(正向/边界/非法/空值/注入)
      ├─ POM 类自动生成(含智能定位策略)
      ├─ 测试用例自动生成(含多维度断言)
      └─ 输出 pages/ + testcases/ + data/ ← 完整项目结构

# 4. 第三站:健壮性增强
   └─ 基础脚本 → ui-testscript-enhancer
      ├─ 智能等待补全(替换硬编码 sleep)
      ├─ 弹窗拦截 + iframe 自动切换
      ├─ 异常重试 + 失败截图/录屏
      ├─ 验证码自动识别
      └─ 输出增强脚本 ← demo 级进化为生产级

# 5. 第四站:视觉断言与多浏览器适配
   └─ 增强脚本 → ui-visual-assert
      ├─ 视觉断言(全页 + 局部截图对比)
      ├─ 响应式适配(桌面/平板/移动端)
      ├─ 多浏览器兼容(Chromium/Firefox/WebKit)
      └─ 输出跨浏览器脚本 + 基线图片库 ← 视觉级验证

# 6. 第五站(可选):智能维护
   └─ 生产脚本 → ui-auto-maintainer(定时触发)
      ├─ 页面变更检测(DOM diff)
      ├─ 定位策略自愈
      ├─ 视觉基线更新
      └─ 输出维护报告 + 修复建议 ← 可持续运营

六、AI 负责干活,人负责把关

这里有一个关键问题必须说清楚,AI 生成的一切结果,都不是直接拿来就用,需要人工校验。

这套 4+1 Skill 能帮你完成的是「解析、生成、增强、适配、维护」这些动作,把数周甚至数月的体力劳动压缩到几分钟或几小时。但以下这些事情,AI 做不了,仍然需要人来把关:

AI 负责的事 人负责的事
全站页面自动遍历 确认遍历范围是否完整(有没有遗漏关键页面)
元素定位策略推导 校验定位策略是否合理(跟真实页面核对)
测试数据智能构造 确认数据规则是否覆盖核心业务场景
脚本健壮性增强 确认等待策略、异常处理是否符合真实交互
视觉断言与多浏览器适配 确认基线图片是否准确、容差阈值是否合理
页面变更检测与自愈 确认自愈后的定位是否正确(而非「恰好能找到」)

说白了,AI 负责把「从 0 到 80」的体力活干完,人负责「从 80 到 100」的质量把关。 这样既高效,又不会失去对质量的控制。

特别提醒: 在 Skill 调试和初期使用阶段,建议打开真实网页,挑几个关键页面和关键元素,用开发者工具核对 AI 生成的 pages.yaml、POM 类、定位策略与页面实际元素是否一致,确保解析结果的真实性和准确性。

七、Skill 源码与完整教程

大家可以自己根据本文提供的思路和架构进行开发 Skill,如果需要现成的教程和 Skill,也可以加入「狂师 . AI 进化社」获取,里面有各类 AI 技术落地保姆级图文教程、视频教程,包括 AI 赋能测试全流程的实战教程(保姆级手把手喂饭教程,跟着步骤操作,零基础也能快速上手,目前含有 30 多个 AI 测试全场景的 Agent Skill)。

温馨提醒,「AI 测试」只是 AI 进化社八大技能版块之一。

写在最后

回顾一下整套架构:

痛点: 从页面解析到脚本维护,UI 自动化的每个环节都耗时费力,且高度依赖人工经验。

方案: 不要搞万能 Skill,按职责拆成 4+1 个专业 Skill,每个只做一件事,形成 解析 → 生成 → 增强 → 适配 → 维护 的完整闭环。

效果:

传统模式 Agent Skill 模式
人工抓元素 3-5 天 一个入口 URL,几分钟全站遍历
手写 POM + 用例 + 数据,数周 一步批量生成,分钟级
demo 级脚本,上 CI 就挂 自动补全等待/异常/弹窗/验证码,生产级
DOM 断言测不出样式问题 视觉断言 + 多浏览器 × 多分辨率自动覆盖
前端改版 → 脚本全废 → 人工修 变更检测 + 定位自愈 + 基线更新

边界: AI 负责解析、生成、增强、适配和维护,人负责校验和决策。

这套 4+1 Skill 架构,不是理论设计,而是「狂师 . AI 进化社」的成员们正在实际使用的方案。很多同学反馈,UI 自动化测试的落地效率明显提升,不再被元素定位、脚本编写、维护成本折磨了。

如果你想深入某个具体 Skill 的实操细节,可以看这个系列的单独拆解:

  1. ui-page-parser:页面元素解析 --- 一个入口 URL,全站自动遍历
  2. ui-testscript-generator:脚本批量生成 --- 一步生成 POM + 用例 + 数据
  3. ui-testscript-enhancer:健壮性增强 --- 等待 + 异常 + 弹窗 + 验证码 + 截图
  4. ui-visual-assert:视觉断言与多浏览器适配 --- 视觉级验证 + 跨浏览器兼容
相关推荐
breeze jiang1 小时前
React useRef 实战:从 input 聚焦到 Web Worker 引用
前端·javascript·react.js
CoderIsArt1 小时前
SAHI with YOLOv5 for Sliced Inference
人工智能·yolo
zcmodeltech1 小时前
智慧城市沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的园区-城市-数字孪生联动方案
服务器·数据库·人工智能·stm32·嵌入式硬件·信息可视化·智慧城市
@Mr_LiuYang2 小时前
《深入理解 AI Agent:设计原理与工程实践 》实验1-2 深度搜索能力
人工智能·agent
2601_965798472 小时前
Why Most WordPress Themes Break Elementor and How I Fixed It
数据库·人工智能·php
苏灿烤鱼2 小时前
GitHub #2 拆解|把工程经验装进 Agent,为什么仍会“静默失效”?
javascript·人工智能·agent
90后的晨仔2 小时前
uni-app 生命周期深度解析(iOS / Android / 鸿蒙 / Vue3 四端对照)
前端
额恩663 小时前
预训练模型:从BERT到GPT的进化之路
人工智能·自然语言处理
钛态3 小时前
AI 辅助:前端框架反模式:过度封装、状态滥用与副作用失控
前端·vue·react·web