UI-Probe 使用 AI 智能理解网页和表单。需要 OpenAI 或 Anthropic 的 API 密钥。
UI_PROBE_FALLBACK_MODE=true 可以使用基本的 Playwright 功能而不使用 LLM没有有效的 API 密钥时,操作会失败并显示清晰的错误信息。
网站测试是破碎的。你编写了数百行代码,但当开发者将按钮类从 btn-primary 更改为 button-primary 时,你的代码就会失效。你的测试失败不是因为应用程序有问题,而是因为有人移动了一个 div 或重命名了一个 ID。
UI-Probe 是一个助手优先、Claude/MCP 原生的 Web 应用测试器。
UI-Probe 让你可以通过描述你想做的事情来测试网站,无需编写代码或选择器。只需像告诉一个人一样描述即可。
工具如 Testim、Mabl 和 Rainforest QA 已经将无代码/AI 测试推向市场。它们很强大,但通常面向企业、锁定在 SaaS 中,并且针对 QA 工程师。
UI-Probe 走的是另一条路:
UI-Probe 并不局限于测试。就像你说:
……你也可以这样说:
所以,从一个QA 辅助工具开始,它可以成为你的个人 Web 代理——能够测试、重复甚至为你执行实际任务。
UI Probe 不仅仅是测试——它是使 Web 简化的通用意图层。
与标准 Playwright MCP 工具不同,后者为每个测试创建一个新的 JavaScript 文件,UI-Probe 是一个持久的智能测试服务器,维护上下文并从交互中学习。
标准 Playwright MCP:
await page.click('#submit')UI-Probe:
提供标准 Playwright 工具无法提供的完整旅程管理:
// 标准 Playwright 方法 - 你需要编写代码:
const { chromium } = require('playwright');
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('http://example.com');
await page.fill('#email', 'test@example.com');
await page.fill('#password', 'password123');
await page.click('button[type="submit"]');
// UI-Probe 方法 - 只需描述你的目标:
run_flow({ goal: "作为新用户注册" })
{
"success": true,
"data": {
"clicked": true,
"selector": "button:has-text(\"提交表单\")",
"currentUrl": "http://localhost:8083/test/forms",
"pageTitle": "表单测试 - UI-Probe"
}
}
这意味着你可以构建智能工作流:
# 如果表单提交失败,则尝试备用流程
if response.success == false:
导航到 backup_url
使用不同的数据重试
# 而不是这个噩梦:
await driver.findElement(By.xpath("//div[@id='login-form']//input[@name='email']")).sendKeys("test@example.com");
await driver.findElement(By.css(".btn-submit.primary")).click();
# 你可以使用自然语言:
"测试注册表单"
# 或者当你需要精确时使用明确命令:
填写表单 {"email": "test@example.com"}
点击按钮 "注册"
从未编写过代码?太好了!UI-Probe 就是为了你设计的:
想每天测试你网站上的联系表单吗?只需键入:
# 在 Claude 中,你可以自然地表达:
"测试主页上的联系表单"
# Claude 会根据上下文找出 URL,或者你可以明确指定:
填写表单 "https://mysite.com/contact" {"message": "测试!"}
就是这样。不需要编程。
UI-Probe 给你:
npx mcp-ui-probe setup # 1. 安装浏览器(一次性)
echo "OPENAI_API_KEY=sk-..." > .env # 2. 添加 API 密钥(推荐但非必需)
curl -sSL https://raw.githubusercontent.com/Hulupeep/mcp-ui-probe/main/scripts/claude-setup.sh | bash # 3. 连接到 Claude
claude # 4. 开始使用!
# 安装 Web 测试所需的 Playwright 浏览器(约 500MB,耗时 2-3 分钟)
npx mcp-ui-probe setup
UI-Probe 需要 API 密钥来进行智能表单理解和工作流执行:
# 在当前目录创建一个 .env 文件
echo "OPENAI_API_KEY=your-key-here" > .env
# 或对于 Anthropic
echo "ANTHROPIC_API_KEY=your-key-here" > .env
# 可选:启用备用模式以使用基本的 Playwright 功能而不使用 LLM
echo "UI_PROBE_FALLBACK_MODE=true" >> .env
重要:没有有效的 API 密钥,智能功能将无法工作:
见下方的成本估算部分了解 API 使用成本。
为什么需要这额外一步? Claude Code CLI 本身找不到 npx,因为它没有访问你的 shell 的 PATH。你需要告诉 Claude 在你的计算机上 npx 的确切位置。
选项 A:自动设置(最简单 - 它会为你做一切):
# 此脚本会:
# 1. 查找 npx 在你的计算机上的安装位置
# 2. 使用正确的路径将 UI-Probe 添加到 Claude
# 3. 验证一切配置正确
curl -sSL https://raw.githubusercontent.com/Hulupeep/mcp-ui-probe/main/scripts/claude-setup.sh | bash
运行此脚本后,只需重新启动 Claude,UI-Probe 就可以使用了!
选项 B:手动设置(如果自动设置不起作用):
第 1 步:查找你的 npx 路径
# 在 macOS/Linux 上:
which npx
# 示例输出:/usr/local/bin/npx 或 ~/.nvm/versions/node/v20.11.0/bin/npx
# 在 Windows 上:
where npx
# 示例输出:C:\Program Files\nodejs\npx.cmd
第 2 步:使用完整路径添加到 Claude
# 使用你在第 1 步中的路径:
claude mcp add ui-probe "/full/path/to/npx" "mcp-ui-probe@latest" "start"
# 实际示例:
# 标准 Node.js:
claude mcp add ui-probe "/usr/local/bin/npx" "mcp-ui-probe@latest" "start"
# 使用 NVM:
claude mcp add ui-probe "$HOME/.nvm/versions/node/v22.11.0/bin/npx" "mcp-ui-probe@latest" "start"
# Windows:
claude mcp add ui-probe "C:\Program Files\nodejs\npx.cmd" "mcp-ui-probe@latest" "start"
# 启动 Claude Code CLI
claude
# UI-Probe 工具现在可用!试试:
# - 导航到网站
# - 分析页面元素
# - 填写并提交表单
# - 运行完整的测试流程
想在测试自己的站点之前看看 UI-Probe 的效果吗?
# 启动内置的测试服务器,包含示例表单
npx mcp-ui-probe test-server # 在 http://localhost:8081/test 运行
npx mcp-ui-probe test-server --port 3000 # 如果 8081 被占用,使用自定义端口
# 在浏览器中访问 http://localhost:8081/test 查看游乐场
# 然后在 Claude 中尝试:run_flow "作为新用户注册" "http://localhost:8081/test"
# 克隆它(这会下载代码)
git clone https://github.com/Hulupeep/mcp-ui-probe.git
cd mcp-ui-probe
# 安装它(这会设置一切)
npm install
# 关键步骤:安装浏览器(一次性,耗时 2-3 分钟)
npx playwright install
# 添加到 Claude:
claude mcp add ui-probe "node" "/path/to/mcp-ui-probe/dist/index.js"
# 在 Claude 中,只需描述你想要的:
"测试用户是否可以在 example.com 注册"
# 或者具体一点:
run_flow "前往 https://example.com/signup 并创建一个账户"
UI-Probe 理解你想做什么:
# 只需描述你想要的 - UI-Probe 会弄清楚:
"测试用户是否可以在 example.com 注册"
"检查结账流程是否正常"
"用测试数据填写联系表单"
"点击提交按钮"
有时你需要具体说明要做什么:
# 使用明确命令进行精确控制:
导航 "https://staging.myapp.com/login" # 跳转到确切的 URL
填写表单 "https://myapp.com/contact" {"message": "测试"} # 填写特定字段
点击按钮 "提交订单" # 点击确切的按钮文本
验证元素 "div.success" "可见" # 检查特定元素
最佳实践:先使用自然语言。如果 UI-Probe 需要澄清或你需要精确控制,切换到明确命令。
# 自然语言(建议从这里开始):
"测试用户是否可以在 myapp.com 登录"
"检查登录流程"
# 明确命令(为了精确控制):
导航 "https://myapp.com/login"
填写表单 {"email": "test@example.com", "password": "password123"}
点击按钮 "登录"
验证页面 {"expectedContent": ["仪表板", "欢迎"]}
# 自然语言:
"从 shop.com 购买一件蓝色衬衫"
"测试结账流程,使用测试信用卡"
# 明确命令:
导航 "https://shop.com"
点击按钮 "衬衫"
点击按钮 "蓝色棉质T恤"
点击按钮 "加入购物车"
填写表单 {"card": "4111111111111111", "exp": "12/25", "cvv": "123"}
点击按钮 "完成订单"
# 测试错误数据会发生什么:
填写表单 "https://myapp.com/signup" {"email": "not-an-email"}
# UI-Probe 告诉你:"❌ 出现了电子邮件验证错误"
验证元素 "https://myapp.com" "免费送货" "可见"
# 返回:"✅ 页面上找到了 '免费送货'"
# 完整的购买流程
"购买网站上最便宜的笔记本电脑"
# UI-Probe 自动:
# - 找到商店
# - 搜索笔记本电脑
# - 按价格排序
# - 加入