使用说明
项目简介
MCP POM生成器服务器是一个实验性的工具,旨在通过扫描网站,自动生成优化的Playwright Page Object Model (POM) 文件。它可以帮助开发者快速创建和维护UI自动化测试所需的POM,并提供可视化界面来验证生成的POM的准确性。虽然项目名称包含“MCP”,但其核心功能是服务于UI自动化测试,而非通用LLM上下文服务,此处MCP可理解为 Maintenance and Creation tool for POMs。
主要功能点
- 自动化POM生成: 扫描公共和需要身份验证的网站页面,自动生成TypeScript格式的Playwright POM类。
- 智能元素定位: 优先使用 'data-testid'、角色 (role)、标签 (label)、占位符 (placeholder) 等可访问性属性来定位元素。
- 可视化验证: 通过交互式可视化界面,对比生成的POM与实际页面,高亮显示已映射、缺失或损坏的元素定位器,方便调试和验证。
- 支持认证站点: 可以处理需要登录才能访问的网站,通过Playwright Global Setup集成来管理会话。
- 多页面抓取: 支持爬取整个网站,并为每个页面生成POM文件。
安装步骤
- 克隆仓库到本地:
git clone https://github.com/juantor16/mcp-pom-generator.git - 进入项目目录:
cd mcp-pom-generator - 安装项目依赖:
npm install
服务器配置
对于MCP客户端,你需要配置以下信息以启动并连接到MCP POM生成器服务器。请注意,此服务器主要通过HTTP API提供服务,而非严格的JSON-RPC协议。以下是客户端配置示例 (JSON 格式):
{ "serverName": "mcp-pom-generator-server", "command": "npx", "args": [ "ts-node", "src/mcpServer.ts" ], "description": "MCP POM生成器服务器,用于自动化生成Playwright POM文件", "baseUrl": "http://localhost:3001" }
- serverName: 服务器名称,可以自定义。
- command: 启动服务器的命令,这里使用 'npx' 来运行 'ts-node'。
- args: 传递给 'command' 的参数,用于执行 'src/mcpServer.ts' 文件。
- description: 服务器描述,可以自定义。
- baseUrl: 服务器的基础URL,默认为 'http://localhost:3001'。
基本使用方法
-
启动服务器: 在项目根目录下,运行以下命令启动 MCP POM生成器服务器:
npx ts-node src/mcpServer.ts服务器默认监听 'http://localhost:3001' 端口。
-
分析单页面生成POM: 使用POST请求访问 '/analyze' 接口,并传递要分析的URL。例如,使用 'curl':
curl -X POST -H "Content-Type: application/json" -d '{"url": "https://your-site.com/public-page"}' http://localhost:3001/analyze生成的POM文件将保存在 'src/output/' 目录下,文件名为根据URL slugify后的名称,例如 'your-site-com-public-page.ts'。
-
爬取多页面生成POM: 使用POST请求访问 '/crawl' 接口,并传递起始URL。例如:
curl -X POST -H "Content-Type: application/json" -d '{"url": "https://your-site.com"}' http://localhost:3001/crawl服务器将从起始URL开始爬取网站,并为每个访问的页面生成POM文件,同样保存在 'src/output/' 目录下。
-
可视化对比POM: 使用 'compare.ts' 脚本来可视化验证生成的POM文件与实际页面的匹配情况。例如:
npx ts-node src/compare.ts --url=https://your-site.com/public --pom=src/output/public.ts这将打开浏览器,并在页面上高亮显示POM中定义的元素,以及页面上未被POM覆盖的元素,帮助你检查POM的完整性和准确性。
请注意,此服务器主要用于辅助生成Playwright POM文件,其“MCP”概念与通用LLM上下文服务有所不同。
信息
分类
开发者工具