浏览器自动化工具

MCP Selenium是一个基于Selenium WebDriver的浏览器自动化工具,支持通过标准化的MCP客户端进行高级浏览器操作,适用于AI助手程序化控制浏览器。

  • by SirBlobby
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 sirblobby/mcp-selenium

使用说明

MCP硒

Selenium WebDriver的全面模型上下文协议(MCP)服务器实现,通过标准化的MCP客户端(如Claude Desktop和其他MCP兼容应用程序)实现高级浏览器自动化。

这允许AI助手使用80多种自动化工具以编程方式控制web浏览器。

安装

使用npm安装包:

npm install @sirblob/mcp-selenium

使用pnpm安装软件包:

pnpm install @sirblob/mcp-selenium

用法

添加到MCP客户端配置中:

{
  "mcpServers": {
    "selenium": {
      "command": "npx",
      "args": ["-y", "@sirblob/mcp-selenium"]
    }
  }
}

支持的浏览器

  • 铬 -全功能支持,包括无头模式
  • 火狐 -全功能支持,包括无头模式
  • 边缘 -全功能支持,包括无头模式
  • 游猎 -基本功能支持(选项有限)

可用工具

浏览器管理

  • start_browser -启动具有可选配置的浏览器(Chrome、Firefox、Edge或Safari)
  • 导航 -导航到指定的URL
  • 关闭会话 -关闭当前浏览器会话
  • get_browser_status -获取当前浏览器会话的状态

元素查找和交互

  • find_element -使用各种定位器策略查找元素
  • click_element -点击某个元素
  • send_keys -向元素发送文本输入(键入)
  • get_element_text -获取元素的文本内容
  • get_element_source -获取元素及其所有子元素的HTML源代码
  • 上传文件 -使用文件输入元素上传文件
  • find_elements_by_xpath -使用XPath查找多个元素
  • scroll_to_ence -滚动以将元素带入视图
  • 高亮元素 -用彩色边框突出显示元素以进行调试
  • find_parent_element -查找给定元素的父元素
  • find_sibling_element -查找给定元素的同级元素

选择图元工具

  • 按文本选择选项 -通过可见文本在选择元素中选择选项
  • select_option_by_value -通过值属性在选择元素中选择选项
  • select_option_by_index -按索引选择选择元素中的选项
  • 获取选择选项 -从选择元素中获取所有可用选项
  • get_selectd_option -从select元素获取当前选定的选项

表格元素工具

  • 获取表数据 -从表元素中提取所有数据
  • get_table_cell -按行和列获取特定表单元格的内容
  • click_table_cell -按行和列单击特定表单元格
  • get_table_row_count -获取表中的行数
  • get_table_column_count -获取表中的列数
  • find_table_row_by_text -查找包含特定文本的表行

列出元素工具

  • get_list_items -从列表元素(ul或ol)获取所有项目
  • get_list_item -按索引获取特定列表项
  • 点击列表项 -按索引单击特定列表项
  • click_list_item_by_text -单击包含特定文本的列表项
  • find_list_item_by_text -查找包含特定文本的列表项的索引
  • get_list_item_count -获取列表中的项目数
  • get_nested_lists -获取列表中嵌套列表的相关信息
  • 筛选器列表项 -根据文本条件筛选列表项

元素状态和属性

  • get_element_attribute -从元素获取属性值
  • get_element_css_属性 -从元素获取CSS属性值
  • is_element_显示 -检查元素是否可见
  • 已启用元素 -检查元素是否启用/交互
  • is_element_selected -检查元素是否已选中(复选框、单选按钮)

鼠标和键盘交互

  • 悬停 -将鼠标悬停在元素上
  • hover元件 -元素交互的替代悬停命令
  • 拖放 -将元素拖动到另一个位置
  • 双重点击 -双击元素
  • 右_点击 -右键单击元素(上下文菜单)
  • send_key_组合 -发送键盘组合(Ctrl+C、Alt+Tab等)
  • 按键 -模拟按下单个键盘键

页面操作

  • take_screenshot -捕获当前页面的屏幕截图,并将其保存到带有时间戳的当前目录中
  • get_page_title -获取当前页面标题
  • 获取标题 -获取当前页面标题的替代方法
  • get_current_url -获取当前页面URL
  • get_page_source -获取页面的完整HTML源代码
  • page_来源 -获取页面完整HTML源代码的替代方法
  • 刷新页面 -刷新当前页面
  • go_back -在浏览器历史记录中导航回来
  • go_forward -在浏览器历史记录中向前导航

JavaScript执行

  • execute_javascript -在浏览器中执行JavaScript代码
  • execute_async_javascript -执行带有回调支持的异步JavaScript

滚动

  • scroll_to_ence -滚动以将元素带入视图
  • scroll_element_into_view -将元素滚动到视图中的替代方法
  • 滚动_像素 -按指定像素数滚动
  • 滚动坐标 -滚动到页面上的特定坐标
  • scroll_to_toop -滚动到页面顶部
  • scroll_to_tobottom -滚动到页面底部

窗口管理

  • 获取窗口大小 -获取当前窗口尺寸
  • set_window_size -设置窗口大小
  • 最大化窗口 -最大化浏览器窗口
  • get_indow_handles -获取所有打开的窗口句柄
  • switch_to_wow -通过控制柄切换到特定窗口
  • switch_to_windows_by_title -按标题切换到窗口/选项卡
  • switch_to_windows_by_url -通过URL切换到窗口/选项卡
  • 关闭窗口 -关闭当前窗口
  • switch_to_frame -按ID或名称切换到帧
  • switch_to_default_内容 -切换回主文档

Cookie管理

  • get_cookies -获取当前域的所有Cookie
  • add_cookie -添加新cookie
  • 删除cookie -删除特定cookie
  • 删除所有Cookie -删除所有Cookie

XPath工具

  • evaluate_xpath -计算XPath表达式并返回结果
  • count_elements _ by_xpath -统计与XPath表达式匹配的元素
  • get_xpath_text_content -从与XPath匹配的元素中获取文本内容
  • get_element_source_by_xpath -获取与XPath匹配的HTML元素源
  • get_elementxpath -获取元素的XPath
  • get_elements _ xpath -获取多个元素的XPath表达式
  • get_element_attribute_by-xpath -使用XPath从元素获取属性值
  • find_element_by_xpath_attribute -通过XPath和属性值查找元素
  • find_element_by_xpath_index -通过XPath在特定索引处查找元素
  • 点击_元素_扩展路径_文本 -单击XPath找到的包含特定文本的元素

高级元素操作

元素状态和属性

  • get_element_attribute -从元素获取属性值
  • get_element_css_属性 -从元素获取CSS属性值
  • is_element_显示 -检查元素是否可见
  • 已启用元素 -检查元素是否启用/交互
  • is_element_selected -检查元素是否已选中(复选框、单选按钮)

配置参数

浏览器选项

使用可选参数配置浏览器行为:

{
  "headless": false,
  "arguments": ["--window-size=1920,1080", "--disable-web-security", "--disable-dev-shm-usage"]
}

常见浏览器参数:

  • --headless=new -在无头模式下运行(Chrome/Edge)
  • --window-size=width,height -设置初始窗口大小
  • --disable-web-security -禁用CORS限制
  • --disable-dev-shm-usage -克服有限的资源问题
  • --no-sandbox -禁用沙盒(在容器化环境中很有用)
  • --disable-gpu -禁用GPU硬件加速

定位器策略

在页面上查找元素的多种方法:

  • 本我 -按元素ID查找(<div id="myElement">)
  • 层叠样式表 -通过CSS选择器查找(div.class-name, #id-name)
  • 函数 -通过XPath表达式查找(//div[@class='example'])
  • 名字 -按名称属性查找(<input name="username">)
  • 标签 -按HTML标签名称查找(div, span, input)
  • 类 -按类名查找(class-name)

超时配置

大多数工具都接受可选 timeout 参数(默认值:10000ms):

{
  "by": "id",
  "value": "submit-button",
  "timeout": 15000
}

需求

  • Node.js 22+
  • npm 或 pnpm
  • 浏览器驱动程序 (由Selenium自动管理)
  • TypeScript 5.0+(开发依赖性)

故障排除

常见问题

  • 未找到驱动程序:Selenium会自动下载驱动程序,但请确保已安装目标浏览器
  • 权限错误:在Linux上,您可能需要安装浏览器包(chromium-browser, firefox等等)
  • 超时错误:增加加载缓慢页面的超时值
  • 无头模式问题:某些功能可能无法在无头模式下工作(文件上传、某些交互)

平台特定注意事项

  • macOS:Safari需要在Safari首选项中启用自动化
  • Linux:可能需要GUI浏览器的其他依赖项
  • 视窗:应与标准浏览器安装一起开箱即用

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

致谢

灵感来自 @angiejones/mcp硒