| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- """
- 浏览器工具测试脚本 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())
|