霍格沃兹测试开发学社

《Python测试开发进阶训练营》(随到随学!)
2023年第2期《Python全栈开发与自动化测试班》(开班在即)
报名联系weixin/qq:2314507862

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

关注 霍格沃兹软件测试开发 公众号,回复「资料」, 领取人工智能测试开发技术合集

最近做 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 值得研究,但不应该当成不可修改的标准答案。

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

人工智能技术学习交流群
伙伴们,对AI测试、大模型评测、质量保障感兴趣吗?我们建了一个 「人工智能测试开发交流群」,专门用来探讨相关技术、分享资料、互通有无。无论你是正在实践还是好奇探索,都欢迎扫码加入,一起抱团成长!期待与你交流!👇

image

四、元素定位也不能完全交给 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 自己决定的那一步,会是什么?

推荐学习
智能化测试-测试用例生成公益训练营,从行业大模型特性讲起,带你搞懂AI测试的全链路:大模型能力评测、智能体Harness工程、Skill技能体系、CLI与MCP工具体系、RAG知识图谱——最后直接上手打造一个能自动生成测试用例的智能体。

image

关于我们
霍格沃兹测试开发学社,隶属于 测吧(北京)科技有限公司,是一个面向软件测试爱好者的技术交流社区。

学社围绕现代软件测试工程体系展开,内容涵盖软件测试入门、自动化测试、性能测试、接口测试、测试开发、全栈测试,以及人工智能测试与 AI 在测试工程中的应用实践。

我们关注测试工程能力的系统化建设,包括 Python 自动化测试、Java 自动化测试、Web 与 App 自动化、持续集成与质量体系建设,同时探索 AI 驱动的测试设计、用例生成、自动化执行与质量分析方法,沉淀可复用、可落地的测试开发工程经验。

在技术社区与工程实践之外,学社还参与测试工程人才培养体系建设,面向高校提供测试实训平台与实践支持,组织开展 “火焰杯” 软件测试相关技术赛事,并探索以能力为导向的人才培养模式,包括高校学员先学习、就业后付款的实践路径。

同时,学社结合真实行业需求,为在职测试工程师与高潜学员提供名企大厂 1v1 私教服务,用于个性化能力提升与工程实践指导。

posted @ 2026-09-02 15:22  霍格沃兹测试开发学社  阅读(21)  评论(0)    收藏  举报