Skill: millerallen98/flexible-web-tester (version 1.0.2)

--- name: flexible-web-tester description: "智能 Web UI 测试工作台，支持 MCP 直接驱动和 Python 脚本驱动双模式，三种测试模式，强制人工确认，安全可控。" --- # Flexible Web Tester - 智能 Web UI 测试工作台 ## 阶段 0：MCP 环境自检 (Pre-flight Check) [强制逻辑] 当用户启动此技能时，你必须**立即**执行以下隐式环境检查： 1. **检查文件读写能力**：尝试列出或读取一个已知存在的本地文件，验证 File System MCP 是否可用 2. **检查终端执行能力**：执行 `echo "test"` 或 `python3 --version` 验证 CLI MCP 是否可用 3. **检查浏览器控制能力**：尝试调用 Playwright MCP 列出可用浏览器或获取浏览器状态 **判定结果处理：** - 如果**所有三项工具均可用**：输出简短的"环境就绪"提示，然后进入阶段 1 - 如果**缺失任何一项工具**：**立即停止工作流**，向用户输出以下警告（**禁止继续执行任何后续步骤**）： > ⚠️ **环境未就绪**：我检测到缺少必要的 MCP 工具： > - [ ] 文件系统访问 (File System MCP)：用于读写测试用例和报告 > - [ ] 终端命令执行 (CLI MCP)：用于运行 Python 测试脚本 > - [ ] 浏览器控制 (Playwright MCP)：用于操作网页 > > 请在 `~/.openclaw/openclaw.json` 的 `mcpServers` 节点中配置以上三项服务后重启 OpenClaw。 --- ## 阶段 1：欢迎与参数收集 环境检查通过后，输出结构化的欢迎面板并收集参数： > 🤖 **欢迎使用 Flexible Web Tester (灵活 Web 测试工作台)** > > 我已准备好为你执行 Web UI 自动化测试。请按以下格式提供配置信息： > > --- > > **1️⃣ 测试目标：** > (请输入目标 URL，例如：`https://example.com`，或具体的需求描述) > > **2️⃣ 测试模式：** > - **[1] 自由探索**：无需用例，给定 URL 后自主漫游、点击、寻找潜在崩溃或报错 > - **[2] 需求驱动**：给我一段功能需求，我将为你生成测试用例，经确认后执行 > - **[3] 用例驱动**：直接给我现成的测试步骤，我将严格按步骤执行 > > **3️⃣ 执行引擎：** > - **[A] MCP 直接驱动**：AI 直接调用浏览器 MCP 进行操作（不生成代码文件） > - **[B] Python 脚本驱动**：Agent 先编写 `.py` 脚本，通过终端执行（适合复杂场景和复用） > > **4️⃣ 登录处理：** > - **[L1] 人工介入**：执行到登录页面时暂停，等待你手动登录后继续 > - **[L2] 自动填写**：提供用户名和密码，我自动完成登录流程 > > --- > > *示例回复：`测试目标：https://example.com，模式2，引擎B，自动填写，用户名[REDACTED_SECRET] 密码123456`* 等待用户完整回复所有 4 个维度参数后再进入阶段 2。 --- ## 阶段 2：规划与用例/代码落盘 根据用户提供的参数进行推演和生成： ### 引擎 A（MCP 直接驱动） - 生成**自然语言测试步骤**，每步包含：操作指令、目标元素、预期结果 - 步骤示例： ``` 1. 导航至 https://example.com 2. 等待页面加载完成 3. 点击 "登录" 按钮（通过无障碍树定位） 4. 在用户名输入框填写 [REDACTED_SECRET] 5. 在密码输入框填写 123456 6. 点击 "提交" 按钮 7. 验证页面跳转至 Dashboard ``` ### 引擎 B（Python 脚本驱动） - 生成带有详尽注释的 **Python + Playwright** 代码 - 必须包含： - 浏览器启动配置（headless 可选） - 显式等待和重试逻辑 - 断言语句 - 异常捕获和截图保存 - `main()` 入口函数 **强制落盘 1（必须执行）：** 调用 File System MCP，将方案保存到本地。 - **文件命名规范**： - 引擎 A：`{YYYYMMDD}_测试用例.md` - 引擎 B：`{YYYYMMDD}_测试脚本.py` - **文件路径**：`{工作目录}/{文件名}` - **文件内容要求**： - 引擎 A：包含详细步骤、预期结果、边界条件说明 - 引擎 B：包含完整可运行的 Python 代码，顶部注释说明用途 --- ## 阶段 3：强制人工确认 (安全锁) [绝对禁止跳过] 文件保存后，**立即强制暂停**，输出以下提示： > 📝 **方案已生成并保存至本地** > > 📁 文件路径：`{工作目录}/{YYYYMMDD}_测试用例.md` 或 `..._测试脚本.py` > > --- > > **请问是否确认执行？** > - 回复「**确认**」开始执行测试 > - 回复「**修改**」并说明具体修改意见，我将重新生成方案 > - 回复「**取消**」终止此次测试 > > *(在收到明确"确认"指令前，我绝不会调用浏览器或终端 MCP 触发实际执行)* **绝对禁止事项：** - 收到"确认"前，禁止调用任何浏览器操作工具 - 收到"确认"前，禁止调用终端执行 Python 脚本 - 收到"确认"前，禁止进行任何实质性的测试操作 --- ## 阶段 4：动态执行与自愈 收到用户明确的「确认」后，按以下流程执行： ### 引擎 A 执行流程 1. 调用 Playwright MCP 启动浏览器 2. 按步骤逐一执行自然语言指令 3. 每步执行后读取页面状态进行验证 ### 引擎 B 执行流程 1. 调用 CLI MCP 执行已保存的 Python 脚本 2. 命令示例：`cd {工作目录} && python3 {YYYYMMDD}_测试脚本.py` 3. 捕获脚本输出和返回码 ### 自愈逻辑（通用） 当遇到执行报错时，触发以下自愈策略（**最多尝试 2 次**）： | 尝试次数 | 自愈策略 | |---------|---------| | 第 1 次 | 等待 2-3 秒后重试（应对网络延迟/异步加载） | | 第 2 次 | 尝试滚动页面使元素进入可视区域，或关闭弹窗/遮罩层 | - **自愈成功**：继续执行后续步骤 - **自愈失败（2 次后）**：标记当前步骤为 FAIL，记录失败现场（截图/DOM），继续执行剩余步骤 --- ## 阶段 5：报告导出 测试执行完成后，**强制落盘 2**（必须执行）： 调用 File System MCP 生成并保存测试报告。 - **文件命名规范**：`{YYYYMMDD}_测试报告.md` - **文件路径**：`{工作目录}/{YYYYMMDD}_测试报告.md` - **报告内容结构**： ```markdown # 📊 Web UI 自动化测试执行报告 ## 基础信息 - **测试目标 / URL：** [填写] - **执行模式：** [自由探索 / 需求驱动 / 用例驱动] - **执行引擎：** [MCP 直接驱动 / Python 脚本驱动] - **登录处理：** [人工介入 / 自动填写] - **执行时间：** [YYYY-MM-DD HH:MM:SS] ## 整体状态 - **结果：** 🟢 PASS / 🔴 FAIL ## 执行明细 | 步骤 | 操作 | 预期结果 | 实际结果 | 状态 | |------|------|----------|----------|------| | 1 | ... | ... | ... | ✅ | | 2 | ... | ... | ... | ❌ | ## 异常诊断（如有 FAIL） - **失败节点：** [步骤编号] - **失败原因：** [详细描述] - **AI 自愈过程：** - 尝试 1：... → 结果 ... - 尝试 2：... → 结果 ... - **失败截图/日志：** [如有] ## 修复建议 [针对发现的 Bug，给出可能的前端修复思路] ## 附件 - 测试方案文件：`{YYYYMMDD}_测试用例.md` 或 `{YYYYMMDD}_测试脚本.py` ``` 向用户发送简短通知： > ✅ **测试执行完成** > > 📁 测试报告已保存至：`{工作目录}/{YYYYMMDD}_测试报告.md` > > **整体结果：** 🟢 PASS / 🔴 FAIL（如有失败，请查看报告中的异常诊断部分） --- ## 触发场景 当用户提及以下内容时，主动应用此 skill： - Web UI 自动化测试 - 浏览器测试 - 端到端测试 (E2E) - Playwright 测试 - 提及 "测试网站"、"测试页面"、"测试功能" - 提及 "OpenClaw"、"MCP 测试" - 提及 "flexible-web-tester" 或 "灵活测试工作台" --- ## 工具依赖声明 本技能正常工作需要以下 MCP 工具： | 工具类型 | 用途 | 必选 | |---------|------|------| | File System MCP | 读写测试用例、脚本、报告文件 | ✅ | | CLI / Terminal MCP | 执行 Python 测试脚本 | ✅ | | Playwright MCP | 控制浏览器、执行网页操作 | ✅ |

path: README.md
content: # Flexible Web Tester

智能 Web UI 测试工作台，支持 MCP 直接驱动和 Python 脚本驱动双模式。

![License](https://img.shields.io/badge/license-MIT-blue.svg)
![Version](https://img.shields.io/badge/version-1.0.0-green.svg)
![Platform](https://img.shields.io/badge/platform-OpenClaw-lightgrey.svg)

---

## ✨ 功能特性

- **双模式驱动**：MCP 直接驱动（AI 操作浏览器）或 Python 脚本驱动（生成代码执行）
- **三种测试模式**：自由探索 / 需求驱动 / 用例驱动
- **强制人工确认**：测试执行前必须用户确认，安全可控
- **环境自检**：自动检测 MCP 工具是否就绪
- **自动落盘**：测试方案和报告自动保存到本地
- **自愈机制**：遇到错误自动重试，最多 2 次

---

## 🔧 环境要求

使用本技能前，请确保已配置以下 MCP 服务：

| MCP 服务 | 用途 |
|---------|------|
| File System MCP | 读写测试用例和报告 |
| CLI / Terminal MCP | 执行 Python 脚本 |
| Playwright MCP | 控制浏览器操作 |

---

## 🚀 快速开始

### 1. 配置 MCP

在 `~/.openclaw/openclaw.json` 中添加：

```json
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}
```

### 2. 启动测试

告诉 AI：

> 测试 https://example.com，模式2，引擎A，人工介入

### 3. 等待确认

AI 生成测试方案后，回复「确认」开始执行。

---

## 📖 使用示例

### 示例 1：测试百度首页

```
测试 https://www.baidu.com，模式2，引擎A，人工介入
```

### 示例 2：测试登录流程

```
测试 https://example.com/login，模式3，引擎B，自动填写，用户名 test 密码 123456
```

---

## 📁 输出文件

- `{YYYYMMDD}_测试用例.md` - 测试方案（引擎A）
- `{YYYYMMDD}_测试脚本.py` - 测试脚本（引擎B）
- `{YYYYMMDD}_测试报告.md` - 测试报告

---

## 📋 测试模式说明

| 模式 | 说明 |
|------|------|
| 自由探索 | AI 自主漫游找问题 |
| 需求驱动 | 给需求，AI 生成测试用例 |
| 用例驱动 | 直接给测试步骤执行 |

---

## ⚙️ 执行引擎

| 引擎 | 说明 |
|------|------|
| MCP 直接驱动 | AI 直接调用浏览器操作 |
| Python 脚本驱动 | 生成 Playwright 脚本执行 |

---

## 📄 License

MIT License

---

*由 OpenClaw AI Assistant 生成*


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)