Some checks failed
AI Web Tester CI / test (push) Has been cancelled
主要改进: - 新增统一测试器 (universal_tester.py) 支持多种测试模式 - 优化测试报告生成器,支持汇总报告和操作截图 - 增强探索器 DFS 算法和状态指纹识别 - 新增智能测试配置 (smart_test.yaml) - 改进 AI 模型集成 (GLM/Gemini 支持) - 添加开发调试工具和文档
86 lines
2.8 KiB
Python
86 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
快速测试工具 - 最简单的使用方式
|
|
"""
|
|
|
|
import sys
|
|
sys.path.insert(0, ".")
|
|
|
|
from tests.universal_tester import TestConfig, UniversalWebTester
|
|
|
|
|
|
def quick_test():
|
|
"""快速测试函数"""
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(description="快速 Web 测试")
|
|
parser.add_argument("url", help="要测试的网站URL")
|
|
parser.add_argument("--model", "-m", default="claude",
|
|
choices=["claude", "openai", "glm", "mimo"],
|
|
help="AI模型 (默认: claude)")
|
|
parser.add_argument("--headless", action="store_true",
|
|
help="无头模式运行")
|
|
parser.add_argument("--max-clicks", type=int, default=50,
|
|
help="最大点击次数 (默认: 50)")
|
|
parser.add_argument("--login", action="store_true",
|
|
help="是否需要登录")
|
|
parser.add_argument("--username", help="登录用户名")
|
|
parser.add_argument("--password", help="登录密码")
|
|
|
|
args = parser.parse_args()
|
|
|
|
# 创建配置
|
|
config = TestConfig(
|
|
url=args.url,
|
|
name=f"快速测试_{args.url}",
|
|
mode="explore",
|
|
model=args.model,
|
|
headless=args.headless,
|
|
explore_config={
|
|
"max_depth": 10,
|
|
"max_clicks": args.max_clicks,
|
|
"focus_patterns": [],
|
|
"dangerous_patterns": ["删除", "delete", "退出", "exit", "注销", "logout", "sign out"]
|
|
}
|
|
)
|
|
|
|
# 添加登录配置
|
|
if args.login and args.username and args.password:
|
|
config.login = {
|
|
"username": args.username,
|
|
"password": args.password
|
|
}
|
|
|
|
print(f"\n🚀 开始测试: {args.url}")
|
|
print(f"📊 模式: 探索模式")
|
|
print(f"🤖 AI模型: {args.model}")
|
|
print(f"🖥️ 无头模式: {'是' if args.headless else '否'}")
|
|
print(f"🖱️ 最大点击: {args.max_clicks}")
|
|
print("="*50)
|
|
|
|
# 运行测试
|
|
tester = UniversalWebTester(config)
|
|
result = tester.run()
|
|
|
|
# 输出结果
|
|
print("\n" + "="*50)
|
|
print(f"✅ 测试完成!")
|
|
print(f"📊 状态: {'通过' if result['status'] == 'passed' else '失败'}")
|
|
|
|
if result['steps']:
|
|
explore_step = result['steps'][0]
|
|
if explore_step.get('action') == 'explore':
|
|
explore_result = explore_step.get('result', {})
|
|
print(f"🖱️ 点击次数: {explore_result.get('click_count', 0)}")
|
|
print(f"🔍 发现元素: {explore_result.get('discovered_elements', 0)}")
|
|
print(f"🐛 发现问题: {explore_result.get('bugs_found', 0)}")
|
|
|
|
if result['errors']:
|
|
print("\n❌ 错误信息:")
|
|
for error in result['errors']:
|
|
print(f" • {error}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
quick_test()
|