test_browser_fixed.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. """
  2. 浏览器工具测试 - 修复版
  3. 使用 trust_env=False 解决代理环境变量问题
  4. """
  5. import asyncio
  6. import sys
  7. import os
  8. from pathlib import Path
  9. # 添加项目根目录到路径
  10. sys.path.insert(0, str(Path(__file__).parent.parent.parent))
  11. # 关键修复:设置环境变量,让 httpx 忽略代理设置
  12. os.environ['NO_PROXY'] = '*'
  13. os.environ['no_proxy'] = '*'
  14. from browser_use import BrowserSession
  15. from browser_use.tools.service import Tools
  16. async def test_with_fix():
  17. """测试:使用修复后的配置"""
  18. print("\n" + "="*60)
  19. print("测试: 修复代理问题后的浏览器启动")
  20. print("="*60)
  21. try:
  22. session = BrowserSession(
  23. headless=True,
  24. is_local=True,
  25. executable_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
  26. )
  27. print("等待 Chrome 启动...")
  28. await asyncio.sleep(3)
  29. print("启动会话...")
  30. await session.start()
  31. print("✅ 浏览器会话启动成功")
  32. # 测试导航
  33. tools = Tools()
  34. print("测试导航到 example.com...")
  35. await tools.navigate(url="https://www.example.com", browser_session=session)
  36. print("✅ 导航成功")
  37. await session.close()
  38. return True
  39. except Exception as e:
  40. print(f"❌ 失败: {e}")
  41. import traceback
  42. traceback.print_exc()
  43. return False
  44. async def main():
  45. print("浏览器工具测试 - 修复版")
  46. print("="*60)
  47. print("修复方法: 设置 NO_PROXY 环境变量")
  48. print("="*60)
  49. result = await test_with_fix()
  50. print("\n" + "="*60)
  51. print("测试结果")
  52. print("="*60)
  53. print(f"状态: {'✅ 成功' if result else '❌ 失败'}")
  54. print("="*60)
  55. if result:
  56. print("\n💡 解决方案确认:")
  57. print("在代码开头添加以下环境变量设置即可解决问题:")
  58. print(" os.environ['NO_PROXY'] = '*'")
  59. print(" os.environ['no_proxy'] = '*'")
  60. if __name__ == "__main__":
  61. asyncio.run(main())