Selenium自愈MCP服务器
一个MCP服务器,当UI发生变化时,它会自动修复损坏的Selenium测试定位器,从而减少测试维护开销。
概述
当web UI更改破坏了您的自动化测试时,此MCP服务器会使用多种回退策略智能地找到替代定位器。它不会立即失败,而是通过文本内容和可见属性搜索元素,返回新的工作定位器以供将来使用。
特性
- 智能回退:尝试原始CSS选择器,然后进行文本匹配,然后进行可见元素发现
- 定位器返回:在原件失效时提供新的工作定位器
- 零配置:适用于Chrome 143的开箱即用
- 集装箱隔离:在安全的Docker容器中运行
- AI友好:专为AI助手集成而设计
工具
open
导航到URL。
参数:
url(字符串,必填):目标URL
例子:
{
"url": "https://example.com"
}退货: 页面标题确认
______________________________________________________________________
click
单击具有自动自愈功能的图元。
参数:
locator(字符串,必填):CSS选择器description(字符串,可选):回退搜索的文本描述
例子:
{
"locator": "#submit-button",
"description": "login button"
}退货:
- 成功:“点击!”或“点击!新定位符:\[新选择器\]”
- 失败:“即使自我修复也找不到元素”
______________________________________________________________________
type
在具有自动自愈功能的输入字段中键入文本。
参数:
locator(字符串,必填):CSS选择器text(字符串,必填):要键入的文本description(字符串,可选):回退搜索的文本描述
例子:
{
"locator": "#username",
"text": "user@example.com",
"description": "username field"
}退货:
- 成功:“键入!”或“键入!新定位器:\[新选择器\]”
- 失败:“即使自我修复也找不到元素”
______________________________________________________________________
screenshot
捕获当前页面的屏幕截图。
参数: 无
退货: Base64编码的PNG图像
______________________________________________________________________
自我修复是如何工作的
当定位器失败时,服务器会依次尝试三种策略:
- 原始CSS选择器:尝试提供的定位器
- 文本搜索:搜索可点击元素(链接、按钮)以匹配文本
- 可见元素发现:查找具有ID属性的任何可见元素
如果回退成功,服务器将返回新的工作定位器。
安装
Docker(推荐)
docker pull mcp/selenium-selfhealing-mcp来自源头
git clone https://github.com/aiqualitylab/selenium-selfhealing-mcp.git
cd selenium-selfhealing-mcp
docker build -t selenium-selfhealing-mcp .用法
使用Claude桌面版
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"selenium": {
"command": "docker",
"args": ["run", "-i", "mcp/selenium-selfhealing-mcp"]
}
}
}重新启动Claude Desktop以加载服务器。
与其他MCP客户端
使用stdio运行Docker容器:
docker run -i mcp/selenium-selfhealing-mcp服务器使用MCP协议通过stdin/stdout进行通信。
示例用法
User: Open example.com and click using CSS #wrong-id with description "more information"
AI: Opened: example.com
Clicked! NEW LOCATOR: element服务器通过文本找到搜索按钮并返回工作选择器。
用例
- 测试维护:UI更改时自动调整测试
- 探索性测试:让AI通过试验发现正确的定位器
- 测试迁移:使用损坏的选择器更新旧测试
- CI/CD弹性:减少用户界面微小变化带来的不稳定测试
需求
- 码头工人
- Chrome 143+(包含在容器中)
- Python 3.11+(包含在容器中)
错误处理
所有工具都返回明确的错误消息:
- 网络故障返回连接错误
- 缺少元素返回“找不到元素”消息
- 无效的URL返回导航错误
会记录错误,但不会使服务器崩溃。
安全
- 在隔离的Docker容器中运行
- 没有持久存储凭据
- Chrome运行时带有安全标志(
--no-sandbox,--disable-dev-shm-usage) - 除浏览外,无法访问外部网络
局限性
- 仅限Chrome浏览器(不支持Firefox/Safari)
- 仅无头模式(无视觉调试)
- 文本搜索不区分大小写
- 最多3种回退策略
故障排除
服务器无法启动
- 确保Docker正在运行
- 检查端口9222是否未使用
- 验证容器中的Chrome安装
未找到元素
- 提供描述性文本
description参数 - 单击前等待页面加载
- 检查元素是否在iframe中(不支持)
ChromeDriver版本不匹配
- 更新到最新的容器映像
- Chrome和ChromeDriver版本固定在一起
贡献
问题和拉取请求欢迎访问: https://github.com/aiqualitylab/selenium-selfhealing-mcp
许可证
MIT许可证-请参阅许可证文件
作者
艾质量实验室
更新日志
v1.0.0(2025-12-12)
- 初始版本
- 3种策略的基本自我修复
- Chrome 143支持
- Docker容器化
