浏览器自动化代理

一个基于Gemini和Playwright MCP的模块化自动化代理,通过LLM驱动浏览器操作规划和执行。

  • by SagarRuhela1
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 SagarRuhela1/TestPilot-AI

使用说明

🧠 LangGraph MCP测试代理(Gemini+剧作家)

这个项目是 模块化自动化代理 构建使用:

  • 双子座 (谷歌生成人工智能)用于推理和步骤规划
  • 剧作家MCP 实现真正的浏览器自动化
  • LangGraph 用于规划和执行之间的协调

代理读取目标(如 “登录Facebook”),使用Gemini来计划浏览器操作,并通过 剧作家MCP服务器.


🚀 特性

✅ 使用Gemini进行LLM驱动的步骤规划
✅ 通过Playwright MCP实现真正的浏览器自动化
✅ 模块化项目结构(nodes, state, workflow, config, utils)
✅ 使用完全环境驱动的配置 .env
✅ 可与任何兼容MCP的自动化服务器配合使用


🏗️ 项目结构

AiFinalProject/
├── main.py
├── config.py
├── graph/
│   ├── nodes.py
│   ├── state.py
│   └── workflow.py
├── utils/
│   └── helper.py
├── .env
└── README.md

⚙️ 先决条件

确保你有:

  • Python 3.12和3.12+
  • Node.js 18+
  • 剧作家MCP 全局或本地安装

🧩 步骤1:克隆并运行Microsoft Playwright MCP

克隆并启动Playwright MCP服务器:

npx @playwright/mcp@latest --port 8931 --shared-browser-context

📝 笔记:

  • 您可以替换 8931 您喜欢的任何其他港口。
  • 保持此终端打开——Python代理通过该端口连接到此MCP服务器。

🔑 第二步:创建 .env 文件

在项目根目录中,创建 .env 文件并添加以下内容:

# Google Gemini API
GEMINI_API_KEY=YOUR_GEMINI_API_KEY
GEMINI_MODEL_NAME=gemini-2.5-flash

# MCP Server Configuration
MCP_PLAYWRIGHT_URL=http://localhost:8931/mcp
MCP_PLAYWRIGHT_TRANSPORT=streamable_http

💡 如果在其他端口上运行MCP,则可以更改端口。


🐍 步骤3:安装Python依赖项

创建虚拟环境并安装依赖项:

python3 -m venv venv
source venv/bin/activate   # On Windows: venv\Scripts\activate
pip install -r requirements.txt

如果你没有 requirements.txt,使用以下命令创建一个:

pip install langchain-google-genai langchain-core langchain-mcp-adapters langgraph python-dotenv
pip freeze > requirements.txt

🧠 步骤4:运行代理

在MCP服务器运行的情况下,启动您的代理:

python3 main.py

您应该看到类似于以下内容的输出:

🚀 Starting LangGraph MCP Test Agent...

🧠 LLM NEXT STEP RAW:
{
  "tool": "browser_navigate",
  "args": {"url": "https://www.facebook.com"},
  "reason": "Navigating to Facebook...",
  "done": false
}

⚙️ Executing: browser_navigate with args: {'url': 'https://www.facebook.com'}
✅ Tool 'browser_navigate' executed successfully.

⚡ 运作原理

  1. 双子座 生成一个JSON计划,描述下一个操作:
    {
      "tool": "browser_fill_form",
      "args": {
        "fields": [
          {"selector": "#user-name", "value": "standard_user"},
          {"selector": "#password", "value": "secret_sauce"}
        ]
      },
      "reason": "Filling login fields.",
      "done": false
    }
    
  2. LangGraph 将此步骤发送到 剧作家MCP 服务器。
  3. MCP执行浏览器操作,返回HTML,循环重复。
  4. 当双子座标记 "done": true,过程结束。

🧩 故障排除

问题 原因 修复
⚠️ No tool found, stopping execution. 双子座回来了 "step" 而不是 "tool" 确保修复后的最新提示 nodes.py
❌ Missing GEMINI_API_KEY .env 配置不正确 添加 GEMINI_API_KEY 在 .env
MCP connection error MCP未运行或端口错误 使用正确的端口运行MCP --port 或更新 .env

🧪 示例目标

您可以在中更改目标 main.py:

goal = "Go to facebook.com and log/signin/signup in with standard_user/secret_sauce"

尝试尝试其他目标,例如:

  • "Go to saucedemo.com and login as standard_user"
  • "Visit twitter.com and find the login button"

🧰 技术栈

组件 目的
LangGraph 基于状态的编排
LangChain谷歌GenAI Gemini API集成
剧作家MCP 浏览器自动化
Dotenv。 配置管理

🧤 许可证

该项目旨在使用LangGraph、Playwright MCP和Gemini学习和测试自动化框架。
负责任地使用并遵守所有API和网站的服务条款。