Playwright浏览器自动化工具

一个通过MCP-Gateway连接到MCP服务器的Playwright浏览器自动化工具,支持网页导航、截图、元素交互等功能,适用于自动化测试和网页数据抓取。

  • by DonCaton
  • PowerShell
  • 本地部署
  • 更新于
在 GitHub 查看 DonCaton/mcp-gateway

使用说明

带有链接到MCP服务器Playwright的MCP网关的WEBUI

正在运行OLLAMA服务器

设置 OLLAMA_VULKAN=1 设置OLLAMA_SCHED_PREAD=1 设置OLLAMA_DEBUG=1 c: \ollama发球 在web ui中设置上下文: 在一般高级配置中将参数num_ctx设置为32768

用于用Claude创建的MCP网关解决方案

打开WEB UI标准独立容器安装(独立,如果使用docker compose.yml,则不运行)

docker run-d -p 3000:8080 --add host=host.docker.internal:主机网关 -v open-webui:/app/backend/data --名称打开webui --restart always --网络mcp网络`ghcr.io/openwebui/openwebui:main

删除并重建所有内容

docker编写 docker compose-up-build

重新启动特定容器

docker编写重启mcpo

重建特定容器

docker组装-up-d——构建mcpo

查看实时日志

docker编写日志-f mcpo docker日志mcpo网关-f

检查资源使用情况

docker统计mcpo网关

在powershell中测试:

认证持有者

阿布拉卡达布拉

剧作家

调用RestMethod-Urihttp://localhost:8000/playwright/openapi.json http://host.docker.internal:8000/playwright http://mcpo-gateway:8000/playwright

记忆

调用restmethod-kindhttp://localhost:8000/memory/openapi.json http://host.docker.internal:8000/memory http://mcpo-gateway:8000/memory

获取

调用restmethod-kindhttp://localhost:8000/fetch/openapi.json http://host.docker.internal:8000/fetch http://mcpo-gateway:8000/fetch

文件系统

调用restmethod-kindhttp://localhost:8000/filesystem/openapi.json http://host.docker.internal:8000/filesystem http://mcpo-gateway:8000/filesystem

GitHub

调用restmethod-kindhttp://localhost:8000/github/openapi.json http://host.docker.internal:8000/github http://mcpo-gateway:8000/github

示例:导航(根据您在文档中看到的内容调整路径)

PROBANDO PLAYWRIGHT MCP服务器网关通过PowerShell

1.创建脚本文件

打开记事本或您喜欢的文本编辑器。 将您提供的代码粘贴到编辑器中。 以.ps1扩展名保存文件。例如:check_playwright.py。 提示:将其保存到易于访问的文件夹中,例如C:\scripts。

2.创建“简单”别名(可选但推荐)

要通过简单地键入一个短命令(如pwcheck)而不是完整路径来运行脚本,请创建一个批处理包装器: 打开一个新的记事本文件。 粘贴以下行,将路径替换为脚本的位置: 批次 @powershell-执行策略绕过-文件“C:\scripts\check_playwright.ps1”

将此文件另存为pwcheck.bat,保存在系统PATH(如C:\Windows)中的文件夹中。

3.运行脚本:

powershell-执行策略绕过-文件“C:\scripts\check_playwright.ps1”

快速状态检查

写主机“===编剧工具状态===”-前景颜色青色

$工具=@( “浏览器导航”, “浏览器快照”, “browser_take_screenshot”, “浏览器点击”, “浏览器_关闭” )

foreach($tools中的$tool){ 试试看{ $response=调用WebRequest-Uri“http://localhost:8000/playwright/$工具“ -Method Options -错误操作停止 写主机“✓$tool-可用”-前景颜色绿色 }捕获{ 写入主机“✗$tool-错误:$($_.Exception.Message)”-前景颜色为红色 } }

1导航到网站

$正文=@{ url=“https://example.com" }|转换

调用RestMethod-Uri”http://localhost:8000/playwright/browser_navigate" -Method Post -Body$Body `-内容类型“application/json”

2拍摄快照(获取页面内容)

$body=@{}|转换为Json 调用restmethod-类型“http://localhost:8000/playwright/browser_snapshot" -Method Post -Body$Body `-内容类型“application/json”

3截图

$正文=@{ type=“png” filename=“测试截图.png” }|转换

调用RestMethod-Uri”http://localhost:8000/playwright/browser_take_screenshot" -Method Post -Body$Body `-内容类型“application/json”

4.首先导航,然后单击元素

导航

$navBody=@{ url=“https://example.com" }|转换

调用RestMethod-Uri”http://localhost:8000/playwright/browser_navigate" -Method Post -Body$navBody` -内容类型“应用程序/json”

获取快照以查找元素

$snapBody=@{}|转换为Json

$snapshot=调用RestMethod-Uri“http://localhost:8000/playwright/browser_snapshot" -Method Post -Body$snapBody` -内容类型“应用程序/json”

显示快照以查看可用元素

$快照

5.完整工作流程测试

编剧主持“===编剧完整工作流程测试===”-前景颜色青色

第一步:导航

写入主机“n[1/4] Navigating to example.com..." -ForegroundColor Yellow try { $nav = Invoke-RestMethod -Uri "http://localhost:8000/playwright/browser_navigate" -方法帖子 -Body (@{url="https://example.com"} | ConvertTo-Json) -内容类型“应用程序/json” 写主机“✓导航成功”-前景颜色绿色 $nav |转换为Json }捕获{ 写入主机“✗导航失败:$_”-前景颜色红色 退出 }

开始睡眠-秒2

步骤2:获取快照

写入主机“n[2/4] Getting page snapshot..." -ForegroundColor Yellow try { $snapshot = Invoke-RestMethod -Uri "http://localhost:8000/playwright/browser_snapshot" -方法帖子 -Body (@{} | ConvertTo-Json) -内容类型“应用程序/json” 写入主机“✓已检索快照”-前景颜色绿色 写主机“内容预览:”-前景颜色白色 $snapshot.content[0]|转换为Json|选择对象-前500个 }捕获{ 写入主机“✗快照失败:$_”-前景颜色红色 }

第三步:截图

写入主机“n[3/4] Taking screenshot..." -ForegroundColor Yellow try { $screenshot = Invoke-RestMethod -Uri "http://localhost:8000/playwright/browser_take_screenshot" -方法帖子 -Body (@{type="png"; filename="test.png"} | ConvertTo-Json) -内容类型“应用程序/json” 写主机“✓截图已拍摄”-前景颜色绿色 $截图|转换 }捕获{ 写入主机“✗截图失败:$_”-前景颜色红色 }

步骤4:关闭浏览器

写入主机“n[4/4] Closing browser..." -ForegroundColor Yellow try { $close = Invoke-RestMethod -Uri "http://localhost:8000/playwright/browser_close" -方法帖子 -Body (@{} | ConvertTo-Json) -内容类型“应用程序/json” 写主机“✓浏览器关闭”-前景颜色绿色 }捕获{ 写入主机“✗关闭失败:$_”-前景颜色红色 }

写入主机“`n===测试完成===”-前景颜色为青色

6.导航到复杂站点

导航到维基百科

$正文=@{ url=“https://www.wikipedia.org" }|转换

写主机“导航到维基百科…”-前景颜色黄色 $result=调用RestMethod-Uri“http://localhost:8000/playwright/browser_navigate" -Method Post -Body$身体` -内容类型“应用程序/json”

$result |转换为Json

获取页面内容

写入主机“nGetting page snapshot..." -ForegroundColor Yellow $snapshot = Invoke-RestMethod -Uri "http://localhost:8000/playwright/browser_snapshot" -方法帖子 -Body (@{} | ConvertTo-Json) -内容类型“应用程序/json”

显示前1000个字符

写入主机“`nPage内容(前1000个字符):”-前景颜色青色 ($snapshot |转换为Json-深度5)。子字符串(0,[Math]::Min(1000,($snapshot | ConvertTo Json-深度5))。长度)

7形式互动

导航到带有表单的网站

$NAV=调用restmethod-类型“http://localhost:8000/playwright/browser_navigate" -Method Post -正文(@{url=“https://www.google.com“}|转换为Json)` -内容类型“应用程序/json”

开始睡眠-秒2

获取快照以查找表单元素

$snapshot=调用RestMethod-Uri“http://localhost:8000/playwright/browser_snapshot" -Method Post -正文(@{}|转换为Json)` -内容类型“应用程序/json”

写主机“页面元素:”-前言颜色青色 $snapshot |转换为Json-深度3