
做过 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 也可直接用于前端组件文档生成、无障碍审计
为什么这么拆?
三个原则:
- 单一职责:每个 Skill 只做一类核心动作(解析、生成、增强、适配、维护),避免功能耦合。
- 闭环衔接:前一个 Skill 的输出是后一个 Skill 的输入,形成完整的自动化链路。
- 灵活复用 :每个 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 自动化的实际工作流。用户只需输入页面定义,一步拿到完整可运行的项目。



输入:
ui-page-parser输出的pages.yaml- 团队 UI 框架规范(框架选型、目录结构、定位策略优先级、等待机制、断言策略)
- 测试数据规则(可选,用于自定义数据构造规则)
输出:
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 的实操细节,可以看这个系列的单独拆解:
- ui-page-parser:页面元素解析 --- 一个入口 URL,全站自动遍历
- ui-testscript-generator:脚本批量生成 --- 一步生成 POM + 用例 + 数据
- ui-testscript-enhancer:健壮性增强 --- 等待 + 异常 + 弹窗 + 验证码 + 截图
- ui-visual-assert:视觉断言与多浏览器适配 --- 视觉级验证 + 跨浏览器兼容
