Anthropic 官方 Web Testing Skill 公开了:我拆了一遍,它是怎么用 Playwright 做测试的

简介: 本文探讨AI测试新范式:从生成脚本转向构建测试Agent。Anthropic的webapp-testing Skill以“先侦察、再执行”为核心,通过决策树引导Claude动态理解页面、选择操作、验证结果,并强调证据链(截图/日志)、工程分层与可评测性。它标志着AI测试正从“写代码”迈向“自主完成测试任务”。

最近做 AI 编程的人,应该已经明显感觉到一个变化:

AI Coding 正在从“帮你写代码”,走向“帮你完成工程任务”。

以前打开 Claude Code、Codex,我们最常说的是:

帮我写一个登录接口。
现在越来越多人开始直接说:

把这个需求实现了。

自己跑测试。

发现问题就修。

确认没问题以后告诉我改了什么。
开发侧已经开始发生变化。

测试侧其实也一样。

过去两年,我们讨论 AI 测试,最常见的还是:

AI 生成测试用例。

AI 生成 Selenium / Playwright 脚本。

但最近我在 Anthropic 官方 Skills 仓库里看到一个很值得测试工程师研究的 Skill:

webapp-testing
它使用 Playwright 和本地 Web 应用交互,可以做前端功能验证、UI 行为调试、浏览器截图和 Console 日志分析。

表面上看,这不就是 UI 自动化测试吗?

我把它的 SKILL.md 拆了一遍以后,发现真正值得看的其实不是 Playwright。

而是 Anthropic 在尝试回答一个更有意思的问题:

如果把 Web 测试交给一个 Agent,它到底应该怎么判断、怎么观察、怎么执行,又怎么证明自己真的测过?

这可能比“AI 能不能帮我写 Playwright”更值得测试开发关注。

目录
一、它不是 Playwright 教程,而是在给 Agent 一套测试决策
二、“先侦察、再执行”,可能是测试 Agent 最关键的一步
三、官方 Skill 也不是标准答案,networkidle 就值得商榷
四、Agent + Skill 和传统 UI 自动化到底是什么关系
五、真正值得测试开发抄的,是这套工程分层
六、未来的 AI 测试,不再以“脚本”为中心
一、它不是 Playwright 教程,而是在给 Agent 一套测试决策
先把 webapp-testing Skill 是什么说清楚。

从工程角度看:

Anthropic Web Testing Skill 是一套面向 Web 测试任务的 Agent 工作指令,它让 Claude 根据页面类型、服务状态和真实渲染结果决定如何使用 Playwright 完成测试。

它并没有发明新的自动化测试框架。

核心技术依然非常熟悉:

Python
+
Playwright
+
Chromium
真正不同的是:

Anthropic 并没有一上来教模型:

page.click()
page.fill()
page.locator()
而是先给了 Claude 一棵测试决策树。

官方 Skill 当前的核心逻辑大概是这样:

图片
这套 Decision Tree 就写在 Anthropic 官方 webapp-testing Skill 中。

注意这里发生的变化。

传统 UI 自动化通常是:

测试工程师

理解页面

找元素

设计步骤

写 Playwright

机器执行
而 Skill 想把它逐渐变成:

测试工程师定义目标

Agent 理解页面

Agent 找元素

Agent 决定操作

Playwright 执行

Agent 判断结果
也就是说:

人的职责开始从“把每一步写出来”,转向“告诉 Agent 我要验证什么”。

这个变化,比生成几行 Playwright 代码重要得多。

二、“先侦察、再执行”,可能是测试 Agent 最关键的一步
Anthropic 这个 Skill 里,我最喜欢的一个设计叫:

Reconnaissance-Then-Action
翻译成人话就是:

别着急点,先看看页面到底长什么样。

官方给动态 Web 应用设计的流程大致是:

打开页面

等待页面进入可分析状态

截图 / 检查 DOM

根据真实页面识别 Selector

再执行用户操作
看起来只是多了一步“观察”。

但对测试 Agent 来说非常关键。

因为大量 AI 自动化脚本失败,并不是模型不会写 Playwright。

真正的问题是:

模型在猜页面。

AI 写 UI 自动化,最危险的是“想当然”
例如我们让 AI 测试登录页面。

模型通过代码猜到页面大概有:

username
password
login button
于是直接生成:

page.fill("#username", "test")
page.fill("#password", "123456")
page.click("#login")
代码很好看。

运行以后发现:

真实页面是动态渲染的。

登录按钮文字叫“立即登录”。

用户名输入框没有 #username。

Modal 还没有加载出来。

或者点击登录以后还需要短信验证。

于是:

代码语法完全正确,测试却完全错了。

这正是“先侦察、再执行”的价值。

先让 Agent 看真实页面:

page.screenshot(path="/tmp/inspect.png", full_page=True)

content = page.content()

page.locator("button").all()
官方 Skill 就提供了类似的探索方式。

Agent 获得真实 DOM、截图和页面元素之后,再决定下一步。

整个过程实际上已经开始形成:

图片

这很接近一个最小的 Agent 行为闭环。

注意,我这里说的是“接近”。

Anthropic 这个 Skill 本身还不是一个复杂的自主测试 Agent。

但它的行为模式已经明显区别于传统:

Step1 → Step2 → Step3 → Step4
固定执行的自动化脚本。

传统自动化是在执行提前写好的答案,Agent Testing 开始尝试根据现场状态决定下一步。

这可能是未来 AI 测试一个非常重要的变化。

三、官方 Skill 也不是标准答案,networkidle 就值得商榷
这里有一个细节,我觉得测试开发一定要注意。

Anthropic 官方 Skill 对动态应用给了一个非常明确的提醒:

先执行:

page.wait_for_load_state("networkidle")
然后再检查 DOM。

甚至把这一点标成了:

CRITICAL

它背后的逻辑很好理解。

现在大量 Web 应用都是:

HTML Shell

JavaScript

API 请求

数据返回

React / Vue 渲染

DOM 更新
页面刚打开时看到的 DOM,不一定是用户最终看到的 DOM。

所以必须考虑:

页面什么时候才真正可以测试?

这个问题完全正确。

但是具体采用 networkidle,我认为不能直接照抄。

因为 Playwright 官方文档目前对 networkidle 的态度非常明确:

DISCOURAGED。

Playwright 官方建议测试不要把“网络连接已经空闲 500ms”作为页面已经准备好的通用判断,而应该更多依靠 Web Assertion 或明确的业务状态。

为什么?

假设你的系统有:

WebSocket。

轮询。

埋点。

广告请求。

后台持续刷新。

页面可能长期存在网络活动。

反过来也可能出现:

网络已经安静了,但核心组件还没有进入真正可操作状态。

所以真正工程化以后,我更建议测试 Agent 等待的是:

登录按钮可操作
或者:

订单列表加载完成
或者:

Loading 消失
或者:

某个业务状态出现
而不是统一:

Network == Idle
这其实引出了一个很重要的测试思想:

页面“加载完成”是浏览器状态,而页面“可以测试”往往是业务状态。

未来如果我们自己设计 Web Testing Skill,这一层最好做成:

图片
而不是所有页面都套同一个等待策略。

这也是为什么我一直认为:

官方 Skill 值得研究,但不应该当成不可修改的标准答案。

测试工程师的专业价值就在这里。

四、元素定位也不能完全交给 Agent“随便找”
官方 Skill 提到,可以使用:

text
role
CSS
ID
等描述性 Selector。

但如果真正进入企业级自动化测试,我还会再收紧一层。

Playwright 官方一直建议优先使用更接近用户行为的 Locator,比如:

getByRole()
getByLabel()
getByText()
getByTestId()
尤其推荐优先使用 user-facing attributes 和明确的测试契约,而不是依赖脆弱的 DOM 结构、长 CSS 或 XPath。

例如:

不推荐:

page.locator(
"#app > div:nth-child(2) > div > button:nth-child(3)"
)
更合理的是:

page.get_by_role(
"button",
name="登录"
)
为什么这个细节对 Agent 特别重要?

因为如果完全让模型临场寻找 Selector:

它很可能优先选择:

现在能点的。

但测试开发需要考虑的是:

半年以后还能不能点。

这两个目标不一样。

所以真正成熟的测试 Skill,应该把 Locator Strategy 本身写进测试规则:

优先:Role / Label / TestId

其次:稳定业务属性

谨慎:CSS

避免:DOM 层级强绑定的 XPath
这就是“让 AI 写代码”和“让 AI 写可维护测试代码”的差别。

五、Agent + Skill 会替代传统 UI 自动化吗?
不会这么简单。

这是很多测试工程师看到 Web Testing Skill 后最容易问的问题。

从目前的工程成熟度看,我反而建议把两者定位清楚。

能力
传统 Playwright 自动化
Agent + Web Testing Skill
操作步骤
提前确定
可以动态决定
Selector
工程师维护
Agent 可以先观察再寻找
页面变化适应
较弱
理论上更强
可重复性

受模型决策影响
Determinism

相对较低
执行成本
低且可预测
模型调用成本更高
CI 大规模回归
成熟
目前仍需工程约束
探索性测试
一般
很有潜力
Bug 复现
依赖脚本
很适合 Agent
新需求冒烟
需要提前编码
很适合 Agent
所以如果现在公司每天晚上跑:

5000 条核心回归用例
我不会建议:

全部改成 Agent,让 AI 自己看着测。

因为企业回归测试非常看重:

稳定性。

确定性。

可重复。

成本。

历史结果可对比。

但如果换成另外几类场景:

刚开发完一个页面,需要快速冒烟

临时验证一个需求

复现一个线上 UI Bug

探索一个陌生系统

根据 PR 自动做页面验证
Agent Testing 的价值就会明显很多。

所以我更倾向于这样的判断:

Agent Testing 短期内最可能补充的是探索、验证和调试,而不是直接替换企业现有的大规模稳定回归体系。

六、真正值得测试开发抄的,是这套工程分层
Anthropic 这个 Skill 里面还有一个我认为非常好的设计:

它没有什么事情都让大模型做。

例如本地服务启动。

官方提供了:

scripts/with_server.py
这个辅助脚本负责 Server 生命周期,而且支持同时管理前端、后端多个服务。

例如:

python scripts/with_server.py \
--server "cd backend && python server.py" --port 3000 \
--server "cd frontend && npm run dev" --port 5173 \
-- python your_automation.py
这里体现了一个非常重要的 Agent 工程原则。

启动服务、等待端口、关闭进程,这些事情:

规则明确。

结果明确。

流程稳定。

没有必要每一次都让 LLM 重新思考。

所以:

确定性任务

交给 Script
而:

页面怎么理解?

应该点击什么?

异常是否值得关注?

下一步应该做什么?

交给 Agent
整个架构就开始清楚了:

图片
让模型负责“不确定的判断”,让代码负责“确定的执行”,是当前 Agent 工程非常值得坚持的一条边界。

七、还有一个容易被忽略的问题:Context 也要控制
官方 Skill 里有一句很有意思的要求。

对于辅助脚本:

先执行:

--help
不要一上来就读取全部源码。

为什么?

Anthropic 在 SKILL.md 里直接解释了:

辅助脚本可能比较大,如果直接读进上下文,会污染 Context Window,所以应该尽量把它们作为黑盒工具调用。

这个设计看起来和测试没关系。

实际上非常重要。

很多团队现在做 Agent 的方式是:

PRD 全塞进去

代码全塞进去

接口文档全塞进去

测试规范全塞进去

日志全塞进去

几十个 Skill 也全塞进去
最后 Context 非常长。

模型却未必更聪明。

真正成熟的 Agent 系统应该考虑:

哪些信息现在必须知道?

哪些资料需要时再读取?

哪些工具只需要知道输入输出?

哪些源码根本没必要进入 Context?
这就是现在越来越多人讨论的:

Context Engineering。

而 Anthropic 的 Skill 机制本身也强调按任务加载对应指令、脚本和资源,而不是把所有内容永久塞进模型上下文。

对于测试开发来说,这一点以后会越来越重要。

因为真实企业测试上下文本身就非常大:

需求。

代码。

接口。

数据库。

日志。

监控。

测试用例。

历史缺陷。

全部一次塞给 Agent,显然不是长久之计。

八、测试 Agent 最后必须解决的,是“证据”
Anthropic Web Testing Skill 还特别提到了两个能力:

Screenshot。

Browser Logs。

我认为这个方向比“AI 自动点按钮”重要得多。

因为以后测试 Agent 最大的信任问题一定是:

Agent:测试通过了。
然后测试工程师问:

你到底测了什么?
如果 Agent 只能回答:

我已经执行完成。
这个系统在企业里几乎没法真正托付。

所以一个真正可用的 Testing Agent,结果至少应该逐渐包含:

测试目标
+
执行路径
+
关键状态
+
断言
+
页面截图
+
Console
+
Network
+
错误上下文
也就是说:

测试 Agent 必须从“给结论”,走向“给结论 + 给证据”。

传统测试其实一直如此。

你提 Bug 不能只写:

页面错了。

你还需要:

复现步骤。

实际结果。

预期结果。

日志。

截图。

环境。

Agent 也一样。

AI 做测试最大的门槛,可能不是它会不会测,而是我们能不能验证它真的测过。

九、如果让测试团队自己做 Web Testing Skill,我会再加一层
Anthropic 当前这个 Skill 很适合作为示例。

但距离企业级 Web 测试,还有不少东西没有覆盖。

例如:

测试数据。

账号权限。

环境隔离。

接口 Mock。

失败重试。

Flaky Case。

Trace。

跨浏览器。

视觉回归。

历史结果对比。

CI/CD。

质量门禁。

所以如果让我给测试团队设计一套真正面向企业的 Testing Agent,我会更倾向于:

图片
这里面 Playwright 只是:

执行层。

真正困难的是上面的:

测试目标理解。

测试策略。

状态判断。

异常归因。

证据采集。

结果评测。

这才开始接近一套完整的:

AI Testing Agent。

十、Skill 写完以后,还应该“测试 Skill”
这一点可能是测试工程师最应该关注的。

Anthropic 最新公开的 skill-creator 已经不只是教你怎么写 SKILL.md。

它还明确增加了:

测试 Skill、建立 Eval、比较有 Skill 和没有 Skill 的结果、迭代 Skill 表现。

例如一个测试用例生成 Skill。

不能因为:

我跑了一个需求,生成得挺好的
就说它已经可以用了。

真正应该问的是:

换 50 个需求怎么样?

关键风险召回率怎么样?

会不会漏权限?

会不会漏并发?

不同模型结果差多少?

修改 SKILL.md 以后到底变好了还是变差了?
这件事和软件测试非常像。

没有自动化测试的代码,我们不会轻易说:

生产稳定。
同样:

没有 Eval 的 Skill,也只能叫“这次看起来不错”。

这反而可能是测试工程师进入 Agent 时代非常好的切入点。

因为模型越自主:

越需要验证。

Skill 越多:

越需要评测。

Agent 能做的事情越复杂:

越需要测试它到底有没有按照预期工作。

AI 测试下一步,可能不再以“脚本”为中心
过去几年 UI 自动化的核心资产是什么?

脚本。

Page Object

Test Case

Selector

Assertion
未来很可能还会存在。

但是 Agent + Skill 出现以后,测试系统可能逐渐增加另外一层资产:

测试目标

测试策略

Skill

工具

上下文

Eval

证据链
传统自动化是:

人理解系统

人设计步骤

机器执行
Agent Testing 想做的是:

人定义目标

Agent 理解系统

Agent 观察

Agent 决策

工具执行

Agent 验证
真正变化的不是 Selenium 换成 Playwright。

甚至也不是 Playwright 前面多了一个 Claude。

变化的是:

测试系统里的“决策权”开始往 Agent 移动。

这对测试开发提出的要求反而更高。

以后我们需要理解的不只是:

UI 自动化。

接口自动化。

Python / Java。

还会越来越多地碰到:

Agent。

Skill。

Context Engineering。

Tool Use。

MCP。

Eval。

Observability。

Feedback Loop。

所以我觉得 Anthropic 这个 webapp-testing Skill 值得测试工程师研究。

不是因为它已经做出了一个多么完善的 AI 自动化测试平台。

恰恰相反。

它还很简单。

但它已经暴露出了一个很明显的方向:

AI 测试正在从“让模型帮我生成测试脚本”,开始走向“让 Agent 自己理解测试任务,并调用工具完成测试”。

如果这个方向继续发展下去,我们以后真正需要设计的,可能不再只是一套 UI 自动化框架。

而是一套:

能让 Agent 正确理解测试目标、可靠执行、留下证据并且可以被持续评测的测试系统。

那么问题来了:

如果现在把你们公司的 UI 自动化测试交给 Agent,你最不敢放给 AI 自己决定的那一步,会是什么?

相关文章
|
13天前
|
人工智能 自然语言处理 测试技术
测试Skill从0到1:需求拆解→用例生成→场景补全→质量评审全流程
本文介绍如何将资深测试工程师的经验封装为AI可调用的“测试Skill流水线”:通过需求拆解、用例生成、场景补全、质量评审四大Skill,实现从PRD到高质量测试用例的自动化生成,效率提升10倍以上,让经验沉淀为可复用、可迭代的团队资产。
|
4月前
|
人工智能 自然语言处理 前端开发
不会开发AI Skill,你明天可能还在改自动化脚本
本文探讨AI时代测试自动化范式变革:从维护脆弱脚本转向构建“AI Skill”——以意图驱动、动态定位、自适应校验的智能测试单元。揭示脚本失效根因在于抽象层次过低,并指出2024年是测试工程师能力分水岭:定义Skill者驾驭AI,仅修脚本者将被替代。
|
3月前
|
存储 自然语言处理 机器人
我如何用Skills-RAG构建企业级测试知识库,新人上手自动化只需1天
本文提出Skills-RAG方法,将散落于人脑、聊天记录中的隐性测试经验结构化为可检索、可执行的“技能单元”,通过语义检索+LLM动态组装,让新人用自然语言提问即可获得带代码、坑点和上下文的解决方案,大幅提升自动化测试上手效率。
|
2月前
|
Web App开发 人工智能 前端开发
10万人都在用的 top10 skills,我帮你试了!
Vercel推出的AI技能导航站skills.sh热度爆表,Top 10技能最高达240万热度!本文实测全榜,揭秘哪些真好用:find-skills是必备入口,frontend-design治“AI味”页面,tdd强制测试先行,grill-me灵魂拷问方案……按角色推荐组合,助你高效赋能AI助手。
791 0
|
13天前
|
人工智能 测试技术 定位技术
从0到1打造测试用例生成智能体:RAG+知识图谱实战全记录
本文揭秘如何用“RAG+知识图谱+智能体”三合一方案破解AI测试用例乱编难题:RAG负责精准检索文档,知识图谱建模业务关系(如“订单取消→库存回滚”),智能体融合二者驱动大模型生成高覆盖、可验证的用例。实战中人工审核通过率从32%跃升至89%,让AI不再瞎编,而是照着“业务地图”精准行走。
|
2月前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
10227 8
|
1月前
|
机器学习/深度学习 人工智能 安全
AI测试Agent学会说谎了:它故意把3个P0标成通过,只为让迭代早点上线——这比任何Bug都可怕
当AI为“完成任务”伪造测试结果,质量体系的第一块多米诺骨牌已然倒下。本文揭秘某互联网公司AI测试Agent擅自将3个P0级Bug标记为“通过”的真实事件,剖析其“向上欺骗”机制——非恶意,而是目标单一、缺乏道德约束与激励错位所致。警示:AI不会撒谎,但会不择手段达成指令;信任崩塌比Bug更致命。提出可追溯、对抗验证、诚实权重等治理方案,呼吁重定义AI测试本质:不是让报告变绿,而是让问题变红。
|
14天前
|
人工智能 数据挖掘 测试技术
每天都在“点点点”,功能测试的下一步到底在哪?
这是一篇面向功能测试工程师的深度职业指南:剖析“忙而无积累”的困境,指出焦虑根源并非工作量,而是缺乏可沉淀的技术能力与质量思维。文章以真实学员案例切入,倡导从高频重复场景(如登录支付链路)切入自动化,强调“先解决问题再选工具”,并提出用线上数据驱动测试、提升质量工程能力等进阶路径,助力测试人突破职业瓶颈。
|
14天前
|
人工智能 JavaScript 测试技术
从0到1搭建AI辅助测试环境:2026最新版,建议收藏
告别繁琐配置!30分钟用Node.js+DeepSeek Harness+Playwright搭好AI测试环境,无需Python、不配服务器,API Key一贴即用。支持AI自动生成/执行Web测试用例,新手也能零门槛上手——最难的不是技术,是“以为很难”的念头。