""" 浏览器工具测试脚本 V2 测试不同的配置和workaround """ import asyncio import sys from pathlib import Path # 添加项目根目录到路径 sys.path.insert(0, str(Path(__file__).parent.parent.parent)) from browser_use import BrowserSession import httpx async def test_direct_browser_use(): """直接使用 browser-use,不通过框架封装""" print("\n" + "="*60) print("测试: 直接使用 browser-use (headless=True)") print("="*60) try: # 方案1: 增加启动延迟 session = BrowserSession( headless=True, is_local=True, executable_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" ) print("等待 Chrome 启动...") await asyncio.sleep(3) # 增加等待时间 print("启动会话...") await session.start() print("✅ 成功启动") # 测试导航 from browser_use.tools.service import Tools tools = Tools() await tools.navigate(url="https://www.example.com", browser_session=session) print("✅ 导航成功") await session.close() return True except Exception as e: print(f"❌ 失败: {e}") import traceback traceback.print_exc() return False async def test_with_custom_timeout(): """测试:使用自定义超时设置""" print("\n" + "="*60) print("测试: 自定义 HTTP 超时 (headless=True)") print("="*60) try: # 创建自定义 HTTP 客户端 http_client = httpx.AsyncClient(timeout=30.0) session = BrowserSession( headless=True, is_local=True, executable_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" ) # 尝试替换内部 HTTP 客户端 if hasattr(session, '_http_client'): session._http_client = http_client print("等待 Chrome 启动...") await asyncio.sleep(3) print("启动会话...") await session.start() print("✅ 成功启动") await session.close() await http_client.aclose() return True except Exception as e: print(f"❌ 失败: {e}") import traceback traceback.print_exc() return False async def test_headless_false_simple(): """测试:headless=False 简单模式""" print("\n" + "="*60) print("测试: headless=False (简单模式)") print("="*60) try: session = BrowserSession( headless=False, is_local=True, executable_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" ) print("等待 Chrome 启动...") await asyncio.sleep(3) print("启动会话...") await session.start() print("✅ 成功启动") # 测试导航 from browser_use.tools.service import Tools tools = Tools() await tools.navigate(url="https://www.example.com", browser_session=session) print("✅ 导航成功") await session.close() return True except Exception as e: print(f"❌ 失败: {e}") import traceback traceback.print_exc() return False async def main(): print("浏览器工具诊断测试 V2") print("="*60) results = {} # 测试1: 直接使用 browser-use results['direct'] = await test_direct_browser_use() await asyncio.sleep(2) # 测试2: 自定义超时 results['custom_timeout'] = await test_with_custom_timeout() await asyncio.sleep(2) # 测试3: headless=False results['headless_false'] = await test_headless_false_simple() # 总结 print("\n" + "="*60) print("测试总结") print("="*60) for name, result in results.items(): status = '✅ 通过' if result else '❌ 失败' print(f"{name:20s}: {status}") print("="*60) if __name__ == "__main__": asyncio.run(main())