浏览器自动化工具

MCP Selenium是一个基于Java实现的浏览器自动化工具,通过标准化的MCP客户端实现浏览器自动化任务。

  • by Preranasane
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 Preranasane/GenAi_MCPServer_Selenium

使用说明

MCP硒

Selenium WebDriver的模型上下文协议(MCP)的Java实现,通过标准化的MCP客户端实现浏览器自动化。

概述

MCP Selenium在模型上下文协议和Selenium WebDriver之间提供了一座桥梁。它允许AI助手和其他兼容MCP的客户端使用一组标准化的工具执行浏览器自动化任务。

项目结构

│ ├── McpSeleniumServer.java#主MCP服务器实现 │ ├── McpSeleniumLauncher.java#服务器的启动器脚本 │ └── AdvancedMcpClient.java#用于测试的GUI客户端 ├── 目标/ │ └── mcp-selenium-0.1.0-jar-with-dependences.jar#编译的含依赖项的jar └── pom.xml#Maven项目配置


## Prerequisites

- Java 11 or higher
- Maven (for building)
- Chrome or Firefox browser installed

# Build with Maven
mvn clean package

这将在以下位置创建JAR文件 target/mcp-selenium-0.1.0-jar-with-dependencies.jar.

服务器将启动并等待标准输入上的命令。您将看到服务器信息作为初始输出。

发送命令

现在,您可以向服务器发送JSON命令。将命令直接键入或粘贴到终端中,每行一个。

示例命令
  1. 启动Chrome浏览器:
{"type":"tool_call","tool_call_id":"call-1","name":"start_browser","params":{"browser":"chrome","options":{"headless":false}}}
  1. 导航到网站:
{"type":"tool_call","tool_call_id":"call-2","name":"navigate","params":{"url":"https://www.example.com"}}
  1. 查找元素:
{"type":"tool_call","tool_call_id":"call-3","name":"find_element","params":{"by":"css","value":"h1"}}
  1. 获取元素文本:
{"type":"tool_call","tool_call_id":"call-4","name":"get_element_text","params":{"by":"css","value":"h1"}}
  1. 单击元素:
{"type":"tool_call","tool_call_id":"call-5","name":"click_element","params":{"by":"id","value":"submit-button"}}
  1. 在元素中键入文本:
{"type":"tool_call","tool_call_id":"call-6","name":"send_keys","params":{"by":"id","value":"search-box","text":"search query"}}
  1. 截图:
{"type":"tool_call","tool_call_id":"call-7","name":"take_screenshot","params":{"outputPath":"screenshot.png"}}
  1. 关闭浏览器:
{"type":"tool_call","tool_call_id":"call-8","name":"close_session","params":{}}

关闭服务器

要停止服务器,请在终端中使用Ctrl+C。

选项2:GUI客户端

为了获得更用户友好的体验,您可以使用附带的GUI客户端。

启动GUI客户端

编译并运行客户端:

使用GUI

启动时,GUI客户端会自动启动MCP Selenium服务器。界面包括:

  1. 命令选择器:下拉菜单,选择要执行的MCP命令。
  2. JSON参数:文本字段,用于以JSON格式输入命令参数。
  3. 快速操作按钮:
    • 启动Chrome:启动Chrome浏览器
    • 导航:打开一个对话框以输入URL
    • 截图:截图
    • 关闭浏览器:关闭当前会话
  4. 日志区域:显示服务器响应和日志。

GUI使用示例

查找元素
  1. 从命令下拉列表中选择“find_element”。
  2. 在JSON字段中输入参数:
{"by":"id","value":"login-button"}
  1. 点击“发送”。
发送密钥(键入文本)
  1. 从命令下拉列表中选择“send_keys”。
  2. 在JSON字段中输入参数:
{"by":"id","value":"username","text":"testuser@example.com"}
  1. 点击“发送”。
单击元素
  1. 从命令下拉列表中选择“click_element”。
  2. 在JSON字段中输入参数:
{"by":"css","value":"button.submit"}
  1. 点击“发送”。

支持的命令

MCP Selenium服务器支持以下命令:

命令 说明 必需参数 可选参数
start_browser 启动浏览器 browser (“chrome”或“firefox”) options.headless, options.arguments
navigate 导航到URL url -
find_element 查找元素 by, value timeout
click_element 点击一个元素 by, value timeout
send_keys 在元素中键入文本 by, value, text timeout
get_element_text 从元素中获取文本 by, value timeout
hover 将鼠标悬停在元素上 by, value timeout
drag_and_drop 拖放元素 by, value, targetBy, targetValue timeout
double_click 双击元素 by, value timeout
right_click 在元素上单击鼠标右键 by, value timeout
press_key 按下键盘键 key -
upload_file 上传文件 by, value, filePath timeout
take_screenshot 截图 - outputPath
close_session 关闭浏览器 - -

定位器策略

对于与元素交互的命令,请在 by 参数:

  • id:元素ID
  • css:CSS选择器
  • xpath:XPath表达式
  • name:元素名称
  • tag:HTML标记名称
  • class:CSS类名

与人工智能系统集成

MCP Selenium旨在与支持模型上下文协议的AI系统一起使用。要与Claude这样的人工智能助手集成:

  1. 启动MCP Selenium服务器
  2. 配置AI系统以通过stdin/stdout连接到服务器
  3. 向人工智能发送自然语言命令,人工智能会将其转换为MCP命令

故障排除

常见问题

  1. 浏览器未启动:

    • 确保您已安装Chrome或Firefox
    • 尝试使用 "headless":true 在选项中
    • 检查服务器日志以获取详细的错误消息
  2. 未找到元素:

    • 验证您的定位器(通过和值)
    • 增加超时值
    • 检查元素是否在iframe中
  3. 服务器未响应:

    • 确保JSON格式正确
    • 检查每个命令是否具有唯一的tool_call_id
    • 如果服务器没有响应,请重新启动服务器
  4. 屏幕截图未保存:

    • 提供绝对文件路径
    • 确保目录存在
    • 检查文件权限

致谢

  • 基于Selenium WebDriver构建,实现浏览器自动化
  • 实现模型上下文协议标准