#!/usr/bin/env python3 """ 零配置智能测试 - 无需预先了解系统功能 """ import sys sys.path.insert(0, ".") from src import WebTester def auto_discover_and_test(url: str, model: str = "glm", headless: bool = False): """ 自动发现并测试系统功能 适合完全未知的系统 """ print("=" * 60) print("🤖 零配置智能测试") print("=" * 60) print(f"🌐 目标URL: {url}") print(f"🤖 AI模型: {model}") print(f"🖥️ 无头模式: {'是' if headless else '否'}") print("-" * 60) tester = WebTester(model=model, headless=headless) try: # 启动并导航 tester.start() tester.goto(url) # 步骤1: 智能登录(如果需要) print("\n📝 步骤1: 检测登录状态") current_url = tester.browser.page.url # 简单判断是否在登录页 if "login" in current_url.lower() or tester.browser.page.locator("input[type='password']").count() > 0: print(" 检测到登录页面,尝试智能登录...") # 尝试常见的用户名密码 login_goals = [ "输入用户名admin和密码password,点击登录", "输入admin/admin,点击登录", "输入test/123456,点击登录" ] login_success = False for goal in login_goals: try: result = tester.test(goal) tester.browser.wait(2000) new_url = tester.browser.page.url if new_url != current_url and "login" not in new_url.lower(): print(f" ✅ 登录成功: {goal}") login_success = True break except: continue if not login_success: print(" ⚠️ 自动登录失败,继续探索...") # 步骤2: 全面探索 print("\n🔍 步骤2: 开始智能探索") explore_config = { "max_depth": 3, # 适中的深度 "max_clicks": 100, # 充足的点击 "focus_patterns": [], # 不设限制,让AI自由发现 "dangerous_patterns": ["删除", "退出", "注销", "delete", "logout", "exit"] } explore_result = tester.explore(explore_config) # 步骤3: 分析发现的功能 print("\n📊 步骤3: 分析测试结果") action_log = explore_result.get("action_log", []) # 统计功能类型 clicked_elements = [] forms_filled = [] pages_visited = set() for action in action_log: if action.get("action_taken"): element_name = action.get("element_name", "") clicked_elements.append(element_name) if action.get("action_type") == "form_input": forms_filled.append(element_name) if action.get("url_changed"): pages_visited.add(action.get("after_url", "")) # 输出发现的功能 print(f"\n✅ 测试完成!发现的功能:") print(f" 🖱️ 点击的元素: {len(clicked_elements)} 个") print(f" 📝 填写的表单: {len(forms_filled)} 个") print(f" 📄 访问的页面: {len(pages_visited)} 个") # 显示主要功能模块 if clicked_elements: print(f"\n🎯 主要功能模块:") unique_elements = list(set(clicked_elements))[:10] # 显示前10个 for i, elem in enumerate(unique_elements, 1): print(f" {i}. {elem}") # 生成简化报告 report = { "url": url, "total_clicks": len(clicked_elements), "forms_filled": len(forms_filled), "pages_visited": len(pages_visited), "discovered_elements": unique_elements, "success": True } return report except Exception as e: print(f"\n❌ 测试失败: {e}") return {"success": False, "error": str(e)} finally: tester.stop() def main(): import argparse parser = argparse.ArgumentParser(description="零配置智能测试工具") parser.add_argument("url", help="要测试的网站URL") parser.add_argument("--model", default="glm", choices=["claude", "openai", "glm", "mimo"], help="AI模型") parser.add_argument("--headless", action="store_true", help="无头模式") parser.add_argument("--output", "-o", help="保存报告到文件") args = parser.parse_args() # 运行测试 result = auto_discover_and_test(args.url, args.model, args.headless) # 保存报告 if args.output and result.get("success"): import json with open(args.output, 'w', encoding='utf-8') as f: json.dump(result, f, ensure_ascii=False, indent=2) print(f"\n📄 报告已保存到: {args.output}") if __name__ == "__main__": main()