网页自动化测试·免费版

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

基于 Anthropic 官方 webapp-testing 技能(Apache 2.0)优化中文化。用 Playwright 对本地 Web 应用进行自动化测试,支持静态 HTML 分析、动态应用侦察-执行模式、多服务器生命周期管理、截图捕获、控制台日志记录。适配国内常见前端框架(Vue/React/Angular/uni-app)。免费版,不引用任何付费端点。

一句话选型结论

按资料字段整理

网页自动化测试·免费版是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_d4933a3c/wangye-ceshi-free
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_d4933a3c仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791700679
正文体量9.3 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
网页自动化测试·免费版当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

9.3 KB
模型实际读到的说明书原文,来自技能仓库

网页自动化测试·免费版

基于 Anthropic 官方 webapp-testing 技能(Apache 2.0 许可)优化中文化。

红线(不可违反)

  1. 不操作生产环境:只测试用户明确指定的本地/开发环境,不操作线上生产系统
  2. 不泄露敏感信息:截图和日志中如含敏感数据,先脱敏再展示
  3. 不引导付费:本技能为免费版,不引用任何付费端点
  4. 安全执行:所有脚本在执行前确认用户授权,不擅自执行破坏性操作
  5. 中文优先:错误信息、日志输出、报告内容优先中文

何时使用

用户需要对 Web 应用进行以下任一测试时触发:

  • 功能测试:验证按钮点击、表单提交、页面跳转等交互
  • UI 回归测试:截图对比,检查布局变化
  • DOM 检查:获取页面元素、属性、文本内容
  • 控制台日志:捕获 JavaScript 错误和警告
  • 多页面流程:跨页面交互流程验证
  • 响应式测试:不同视口尺寸下的表现

职责边界

  • 本技能负责:测试脚本编写、执行、结果分析、中文报告
  • 本技能不负责:修复被测应用的 bug、部署被测应用、访问未授权的系统

离线体检(可运行,零依赖,先跑这个)

动手起浏览器之前,先用 references/audit.md 的标准库脚本做静态体检,秒级筛掉
静态可判定的问题,再对剩下需要真实渲染的项目上浏览器:

  • 结构与可及性:lang 缺失、h1 缺失/重复、标题跳级、img 无 alt/无宽高、空链接、
    输入框无 label、空按钮、同步 script、document.write —— 带加权评分(100 分制)
  • CSS 对比度:从 style 块抽 color/background 配对,逐对算 WCAG 对比度,<4.5:1 点名
  • 批量汇总:扫整个目录出评分表,可直接贴进交付邮件

静态体检抓不到 JS 报错、布局错位、交互流程——这些仍走主流程浏览器测试。

主流程

第 1 步:判断应用类型

条件 类型 处理方式
用户提供了 HTML 文件路径 静态 HTML 直接读取文件,分析选择器,写 Playwright 脚本
用户提供了本地服务器地址(localhost) 动态应用 服务器已在运行,直接进入侦察-执行模式
用户提供了项目目录,需要启动服务器 动态应用 使用生命周期管理脚本启动服务器后测试

质检闸 1:无法判断类型时,向用户确认应用结构和启动方式。

第 2 步:侦察-执行模式(动态应用)

侦察阶段:
1. 导航到目标页面
2. 等待 networkidle(关键:动态应用必须等 JS 执行完)
3. 截图保存到临时目录
4. 获取完整 DOM 内容
5. 列出所有可交互元素(按钮、链接、输入框)

执行阶段:
1. 根据侦察结果识别选择器
2. 编写 Playwright 自动化脚本
3. 执行测试动作
4. 验证结果(截图对比、文本断言、元素存在性)

先跑零依赖冒烟(不需要浏览器)

playwright 要下载浏览器内核,装不上或 CI 里没浏览器时,先用纯标准库跑一遍冒烟:
起本地服务 → 查关键路径状态码 → 查页面里有没有该出现的串(防白屏/占位文案残留)。

# RUN: fixture=empty
import http.server, socketserver, threading, urllib.request, urllib.error
import time, functools, pathlib

# 1) 被测目标:真实场景换成你已启动的 dev server,把 BASE 指向它即可
pathlib.Path(&quot;site&quot;).mkdir(exist_ok=True)
pathlib.Path(&quot;site/index.html&quot;).write_text(
    &quot;&lt;!doctype html&gt;&lt;meta charset=utf-8&gt;&lt;title&gt;演示站&lt;/title&gt;&quot;
    &quot;&lt;h1&gt;产品首页&lt;/h1&gt;&lt;button id=cta&gt;立即购买&lt;/button&gt;&quot;, encoding=&quot;utf-8&quot;)

class Quiet(http.server.SimpleHTTPRequestHandler):
    def log_message(self, *a): pass          # 静音,别刷屏

httpd = socketserver.TCPServer((&quot;127.0.0.1&quot;, 0),
        functools.partial(Quiet, directory=&quot;site&quot;))
port = httpd.server_address[1]               # 端口 0 = 系统分配空闲端口,不会撞端口
threading.Thread(target=httpd.serve_forever, daemon=True).start()
BASE = f&quot;http://127.0.0.1:{port}&quot;

def get(path, timeout=5):
    t0 = time.time()
    try:
        with urllib.request.urlopen(BASE + path, timeout=timeout) as r:
            return r.status, r.read().decode(&quot;utf-8&quot;, &quot;replace&quot;), time.time() - t0
    except urllib.error.HTTPError as e:
        return e.code, &quot;&quot;, time.time() - t0
    except Exception as e:
        return 0, f&quot;{type(e).__name__}: {e}&quot;, time.time() - t0

# 2) 断言表:路径 / 期望状态码 / 必须出现的关键串
CHECKS = [
    (&quot;/index.html&quot;,  200, [&quot;产品首页&quot;, &quot;立即购买&quot;]),
    (&quot;/missing.html&quot;, 404, []),
]
failed = 0
for path, want, needles in CHECKS:
    code, body, dt = get(path)
    miss = [n for n in needles if n not in body]
    ok = (code == want and not miss)
    failed += 0 if ok else 1
    print(f&quot;{&#x27;PASS&#x27; if ok else &#x27;FAIL&#x27;} {path:&lt;16} 状态 {code}(期望 {want}) &quot;
          f&quot;耗时 {dt*1000:.0f}ms&quot; + (f&quot; 缺失关键串 {miss}&quot; if miss else &quot;&quot;))

httpd.shutdown()
print(&quot;冒烟失败数:&quot;, failed)

这段脚本里最容易踩的三个坑

  1. 端口写死 8000/5173 会撞车 → 用 (&quot;&quot;, 0) 让系统分配,再从 server_address[1] 取回来
  2. 只查状态码 200 不够:SPA 白屏时状态码也是 200。必须再查页面里的关键串
  3. SimpleHTTPRequestHandler 默认每个请求都打日志,跑批量检查会刷屏 → 重写 log_message 静音

冒烟过了再上 playwright 做交互/DOM/截图层的验证。

第 3 步:编写测试脚本

静态 HTML:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto(&#x27;file:///path/to/index.html&#x27;)
    # 测试逻辑
    browser.close()

动态应用(服务器已运行):

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto(&#x27;http://localhost:5173&#x27;)
    page.wait_for_load_state(&#x27;networkidle&#x27;)  # 关键步骤!
    # 截图检查
    page.screenshot(path=&#x27;/tmp/inspect.png&#x27;, full_page=True)
    # 获取 DOM
    content = page.content()
    # 识别选择器
    buttons = page.locator(&#x27;button&#x27;).all()
    # 执行测试
    browser.close()

动态应用(需启动服务器):
使用生命周期管理脚本(参考 references/with-server.md)

第 4 步:生成测试报告

报告包含:
- 测试目标和时间
- 测试环境(浏览器版本、视口尺寸)
- 测试步骤和结果(PASS/FAIL)
- 截图证据
- 发现的错误和建议

格式:

📋 网页测试报告(日期 时间)

测试目标:[测试了什么]
环境:Chromium [版本] / [视口尺寸]

结果摘要:✅ 全部通过 / ⚠️ [N] 项警告 / ❌ [N] 项失败

详细结果:
1. [测试项] — ✅ PASS
   证据:[截图路径]

2. [测试项] — ❌ FAIL
   预期:[预期结果]
   实际:[实际结果]
   建议:[修复建议]

第 5 步:自检清单

交付前逐条过:

  • [ ] 测试目标明确,用户已确认测试范围
  • [ ] 动态应用等待了 networkidle
  • [ ] 截图保存路径用户可访问
  • [ ] 错误信息已脱敏(无密码、token、个人信息)
  • [ ] 报告中文表述清晰,有具体数据和证据
  • [ ] 无付费引导/增值推销话术残留

失败降级

  • Playwright 未安装 → 提示安装命令 pip install playwright &amp;&amp; playwright install chromium
  • 服务器启动失败 → 检查端口占用,建议更换端口或检查启动命令
  • DOM 元素找不到 → 增加等待时间,使用更宽松的选择器策略
  • 截图过大 → 压缩截图或分页截图

致谢

本技能基于 Anthropic 官方 webapp-testing 技能改编,遵循 Apache 2.0 许可证。原技能由 Anthropic 团队创作,中文适配和国内框架支持由本技能作者完成。

常见问题

5 问
答案由本站依据条目字段整理
网页自动化测试·免费版怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_d4933a3c/wangye-ceshi-free。安装方式为未标注。装完刷新技能列表或重开客户端。

网页自动化测试·免费版支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

网页自动化测试·免费版权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

网页自动化测试·免费版收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

网页自动化测试·免费版用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。