网页表单E2E测试 · 真实浏览器提交并系统发现异常

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

用真实浏览器填写并提交 Web 表单,同时系统性发现异常。当用户要求测试某个网页/系统的表单、填了提交后有异常、找表单 bug、回归验证表单改动时使用。核心能力:Playwright 驱动真实浏览器完成填写提交,全程捕获控制台报错、网络失败、请求返回异常、UI 报错提示,并按「前端校验 / 接口返回 / 后端约束 / 数据一致性 / 性能」五个维度输出可复现的异常清单。用户提供网址(和账号密码,若需要)即可。触发词:测试表单、网页测试、表单测试、填表提交、提交后报错、找bug、测一下这个页面、端到端测试、E2E、form testing、页面异常检测。

一句话选型结论

按资料字段整理

网页表单E2E测试 · 真实浏览器提交并系统发现异常是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

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

安装

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

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

  2. 2
    拿到技能文件

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

  3. 3
    刷新技能列表

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

  4. 4
    验证是否生效

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

技能档案

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

典型使用场景

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

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

读仓库与生成改动

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

跑测试与排查故障

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

选择建议

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

值得选的地方

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

先想清楚的地方

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

更适合

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

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
网页表单E2E测试 · 真实浏览器提交并系统发现异常当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 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 全文

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

真实浏览器填表 + 系统性异常发现

核心原则

1. 提交成功 ≠ 测试通过。
点完提交只说明没抛异常。真正的测试是:提交后重新拉数据,比对实际存了什么。

2. 异常要能复现。 每条异常必须记录:操作步骤、实际值、期望值、复现次数。
「页面有点问题」不是结论,「第二次提交时 POST /api/save 返回 200 但字段没落库」才是。

3. 一次跑完采集,别边跑边查。 控制台报错、网络失败、UI 提示三类信息
要在同一个 session 里连续收集,中途查代码会丢失上下文。

4. 接口说成功但数据没进去,是最高频也最容易被漏的异常。
必须回查校验,不能只看 HTTP 状态码。


与 smart-form-filler(Web 逆向版)的区别

两者都会「填表单」,路径完全不同:

本技能 smart-form-filler
驱动方式 真实浏览器(Playwright) 直接调接口
需要什么 只需网址(登录态可用 Cookie) 需要逆向前端构建产物
强项 发现异常(前端/网络/UI 全链路) 批量填数据(快、可脚本化)
典型场景 回归测试、找 bug、提交报错排查 灌数据、迁移、造测试数据
产出 异常清单 + 复现步骤 落库数据

判断依据:要「测」→ 本技能;要「灌」→ 那个。
两者可串联:先用本技能测出异常,确认没有再用那个批量灌。


五步流程

Step 1 — 环境自检

cd <skill_dir>/web-form-e2e-tester && npm i

只依赖 playwright-core(只提供 API,不带浏览器),浏览器需自行探测:

--chrome 参数 > PLAYWRIGHT_CHROMIUM_EXECUTABLE > BROWSER_EXE >
chromium.executablePath() > 扫描 ms-playwright 目录 > 系统 Chrome/Edge。
全部失败会打印已尝试过的候选列表和四条解决办法。

Step 2 — 侦察:先看清表单长什么样

node scripts/recon.js --url <页面URL> [--cookie-file cookies.json] [--out recon.json]

它输出:
- 所有可见表单控件(input/select/textarea/日期/单选/下拉)
- 每个控件的 name/id/placeholder/label/当前值
- required 标记
- 页面的 console 报错与网络失败(进入表单前就先记下基线)

这一步的输出就是填数据的依据。 不要跳过直接猜字段。

Step 3 — 填表

node scripts/fill-and-submit.js --url <URL> --data data.json \
  [--submit-button "保存"] [--cookie-file cookies.json]

data.json 格式:

{
  "login": { "username": "u", "password": "p" },
  "fields": { "姓名": "张三", "性别": "男" },
  "submit": true
}

填写策略:
- el-select(Element UI)要先点开再点选项,不能直接 fill
- 日期控件优先用 input 直接填 + blur,比走日历点击稳
- 单选/复选要点,不是填
- 下拉是 <select> 的话用 selectOption

Step 4 — 异常采集(核心)

提交后等待并采集四类信号:

信号 来源 为什么重要
console error / warning page.on('console') JS 报错、Vue 异常
page error page.on('pageerror') 未捕获异常,直接导致功能失效
请求失败 page.on('requestfailed') 网络层断、超时、跨域被拦
响应异常 page.on('response') 4xx/5xx、业务 code≠成功
UI 报错提示 .el-message--error 等 前端校验失败、业务拒绝

采集脚本把这些全部落到 findings.json,按发生顺序,不做过滤 ——
噪声也要留着,因为「同一步里既有警告又有报错」往往指向同一个根因。

Step 5 — 回查校验(不能省)

提交后重新请求该条数据的查询接口,逐字段比对:

提交前:{姓名: '', 性别: null}
提交后:{姓名: '', 性别: null}     ← 接口 200 了,但没存进去

这是最容易被放过的一类 bug。判定:
- HTTP 200 + 业务 code=成功 + 字段确实变了 → 真成功
- HTTP 200 + 业务 code=成功 + 字段没变 → 假成功(严重)
- HTTP 200 + 业务 code=失败 → 业务拒绝,看 msg
- HTTP 4xx/5xx → 网络/权限问题


异常清单模板(按五个维度)

每条必须可复现、可定位:

### [A-前端校验] 必填项未拦住
- 步骤:清空「姓名」→ 直接点保存
- 实际:请求已发出,POST /api/save 200
- 期望:前端拦截并提示「请输入姓名」
- 复现:3/3 次
- 定位:xxx.vue 的 rules 里 patientName 的 required 未生效

五个维度依次查:

A. 前端校验

  • 必填项是否真的拦得住(空值提交看是否发请求)
  • 格式校验是否生效(身份证、手机号、金额)
  • 长度/范围边界
  • 校验提示文案是否与实际规则一致

B. 接口返回

  • HTTP 状态码异常(4xx/5xx)
  • 业务 code 非成功码
  • 200 但 msg 里有错误文案
  • 超时

C. 后端约束

  • 前端能过、后端拒(两套规则不一致)
  • 唯一性约束冲突
  • 关联数据缺失导致的外键错误
  • 并发/重复提交

D. 数据一致性

  • 假成功:200 但字段没落库
  • 部分落库:一批字段成功、一批失败
  • 被意外清空:提交后原本有值的字段变空
  • 编码不一致:同一字段两套取值规则
  • 类型截断:小数精度损失、超长截断

E. 性能与体验

  • 请求耗时超阈值
  • 重复提交(连点按钮产生多次请求)
  • 大表单卡顿
  • 提交后无反馈(用户不知道成没成)

关键技巧

用假数据测,别用真数据

破坏性测试(提交、删除、清空)只在测试环境做。
本地造数据:主键类字段过校验位算法、时间链单调递增、枚举取字典内值。

同一操作跑多次

单次成功不代表稳定。关键路径至少跑 3 次,
间歇性 bug(竞态、缓存、时序)只在重复中暴露。

录 trace 便于复现

await context.tracing.start({ screenshots: true, snapshots: true });
// ... 操作 ...
await context.tracing.stop({ path: 'trace.zip' });

npx playwright show-trace trace.zip 可以逐帧回看,
比截图有用得多 —— 能看到提交瞬间的 JS 状态和网络时序。

控制台报错先分类

不是所有 console error 都是 bug。常见三类:

报错 含义
WebSocket connection failed 独立服务未启动,不影响主流程
Failed to load resource: 502/504 后端服务异常,要追
Uncaught TypeError 等 真 bug,必须修

别把无关服务的报错当成表单 bug,先确认它是否影响当前操作。


报告产出

# 测试报告

## 环境
URL / 浏览器版本 / 测试时间 / 数据环境(测试 or 生产)

## 用例
| # | 场景 | 步骤 | 结果 |

## 异常清单
(按 A-E 五维分组,每条含复现步骤与定位建议)

## 未覆盖
(明确说明哪些没测到,不要让人误以为测全了)

「未覆盖」这一节不能省 —— 让人知道边界在哪,
比给一份看起来很全实际只测了两条的报告更有价值。


脚本

文件 用途
scripts/recon.js 侦察:列控件、采基线异常
scripts/fill-and-submit.js 填写 + 提交 + 采集异常
scripts/verify.js 提交后回查比对
references/checklist.md 异常排查清单与判定表

脚本不含任何目标站点信息,改 --url 与 data.json 即可复用。

常见问题

5 问
答案由本站依据条目字段整理
网页表单E2E测试 · 真实浏览器提交并系统发现异常怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_0c7f1934/web-form-e2e-tester。安装方式为未标注。装完刷新技能列表或重开客户端。

网页表单E2E测试 · 真实浏览器提交并系统发现异常支持哪些客户端?

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

网页表单E2E测试 · 真实浏览器提交并系统发现异常权限高吗,安全吗?

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

网页表单E2E测试 · 真实浏览器提交并系统发现异常收费吗?

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

网页表单E2E测试 · 真实浏览器提交并系统发现异常用什么许可证?

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

热门专题

按场景挑技能
全部专题 →

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