使用说明
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硒