d6793cd75875cf647a02b81683c73d6ab357298c
Some checks failed
AI Web Tester CI / test (push) Has been cancelled
新增功能: - 多页面探索: 使用队列管理待探索页面,跟踪深度 - 折叠菜单: 点击后重新扫描发现新元素,自动展开并探索 - DOM 快速发现: 毫秒级元素发现(替代 AI 调用) - 预计算坐标: DOM 发现时计算坐标,点击时直接使用 探索效果: - 访问页面: 1 → 4 - 发现元素: 17 → 30 - 检测菜单展开: ✅ - 检测页面跳转: ✅ - 危险操作保护: ✅
AI Web Tester
基于 AI 视觉模型的智能 Web 自动化测试框架。使用自然语言描述测试目标,AI 会自动分析页面并执行操作。
✨ 特性
- 🤖 AI 驱动 - 使用 Claude/GPT-4V 视觉模型理解页面内容
- 📝 自然语言 - 用自然语言描述测试目标,无需编写选择器
- 📊 自动报告 - 生成嵌入截图的 HTML 报告 + JSON 结果
- 🔧 可配置 - 支持多种 AI 模型和 API 代理
- 🔄 自动重试 - 指数退避重试机制
- 👁️ 视觉回归 - 基线对比检测 UI 变化
- ⚡ 并行执行 - 多线程运行测试用例
- 🚀 CI/CD - GitHub Actions 集成
🚀 快速开始
1. 安装依赖
pip install -r requirements.txt
playwright install chromium
2. 配置环境变量
cp .env.example .env
编辑 .env 文件:
ANTHROPIC_API_KEY=your_api_key_here
ANTHROPIC_BASE_URL=https://api.anthropic.com # 可选,用于代理
ANTHROPIC_MODEL=claude-sonnet-4-20250514 # 可选
API_TIMEOUT=60 # API 超时(秒)
API_MAX_RETRIES=3 # 最大重试次数
LOG_LEVEL=INFO # 日志级别
⚠️ 注意:
BASE_URL不要包含/v1后缀,SDK 会自动添加。
3. 运行测试
python example.py
📖 使用方法
基础用法
from src import WebTester
with WebTester(model="claude") as tester:
tester.goto("https://example.com")
result = tester.test("点击 'More information' 链接")
print(f"完成: {result['steps']} 步骤")
断言验证
with WebTester() as tester:
tester.goto("https://example.com")
result = tester.verify("页面包含 'Example Domain' 文字")
print(f"验证: {'✅' if result['passed'] else '❌'} {result['reason']}")
视觉回归测试
with WebTester() as tester:
tester.goto("https://example.com")
# 首次运行:保存基线
tester.save_baseline("homepage")
# 后续运行:对比基线
result = tester.compare_visual("homepage", threshold=0.01)
if result["match"]:
print("✅ 视觉匹配")
else:
print(f"❌ 差异: {result['diff_percent']*100:.1f}%")
print(f" 差异图: {result['diff_image']}")
批量测试
# 串行执行
python tests/test_cases.py
# 并行执行(3 个线程)
python tests/test_cases.py --parallel --workers 3
# 无头模式
python tests/test_cases.py --headless
🔧 配置项
| 环境变量 | 默认值 | 说明 |
|---|---|---|
ANTHROPIC_API_KEY |
- | Claude API 密钥(必填) |
ANTHROPIC_BASE_URL |
官方地址 | API 代理地址 |
ANTHROPIC_MODEL |
claude-sonnet-4-20250514 |
模型名称 |
API_TIMEOUT |
60 |
API 超时(秒) |
API_MAX_RETRIES |
3 |
最大重试次数 |
LOG_LEVEL |
INFO |
日志级别 |
LOG_FILE |
- | 日志文件路径 |
📁 项目结构
ai-web-tester/
├── src/
│ ├── main.py # WebTester 主类
│ ├── vision/ # AI 视觉模型
│ ├── browser/ # Playwright 浏览器控制
│ ├── agent/ # 测试规划和执行
│ ├── reporter/ # HTML/JSON 报告生成
│ └── utils/ # 工具模块
│ ├── logging_config.py # 日志配置
│ └── visual_regression.py # 视觉回归
├── tests/
│ └── test_cases.py # 测试用例模板
├── .github/workflows/
│ └── test.yml # CI/CD 配置
├── baselines/ # 视觉基线截图
├── reports/ # 测试报告(HTML + JSON)
├── .env.example # 环境变量模板
└── requirements.txt
📋 测试报告
每次测试生成:
- HTML 报告 - 包含步骤详情和嵌入截图
- JSON 结果 - 结构化数据,便于分析
🚀 CI/CD
项目包含 GitHub Actions 配置。设置以下 Secrets 后自动运行测试:
ANTHROPIC_API_KEYANTHROPIC_BASE_URL(可选)
📄 License
MIT
Description
Languages
Python
100%