Playwright MCP

ทางการ

เซิร์ฟเวอร์ Playwright MCP อย่างเป็นทางการสำหรับการทำงานอัตโนมัติของเบราว์เซอร์ การตรวจสอบหน้าเว็บ การจับภาพหน้าจอ และการโต้ตอบกับเว็บจาก Claude, Cursor และเอเจนต์ AI อื่นๆ

GitHub
36.8k
ลองใช้ MCP นี้ผู้สนับสนุน

คุณทำอะไรได้บ้างด้วย Playwright MCP?

  • การเรียกดู Accessibility-tree — ให้ AI ของคุณนำทางหน้าเว็บและอ่านโครงสร้าง accessibility แบบสแนปช็อต โดยไม่ต้องใช้โมเดล vision
  • เซสชันเบราว์เซอร์แบบถาวร — เก็บสถานะการเข้าสู่ระบบระหว่างการสนทนาผ่าน --user-data-dir หรือ --storage-state สำหรับเวิร์กโฟลว์ที่ต้องมีการยืนยันตัวตน
  • การทำงานอัตโนมัติกับหลายเบราว์เซอร์ — ควบคุม Chromium, Firefox, WebKit หรือ Edge ด้วยแฟล็ก --browser สำหรับการทดสอบข้ามเอ็นจิน
  • การจำลองอุปกรณ์ — จำลองอุปกรณ์มือถือเช่น "iPhone 15" ผ่าน --device หรือโหมด --mobile ทั่วไปสำหรับการทดสอบการตอบสนอง
  • การสร้างโค้ด — สร้างสคริปต์ทดสอบ Playwright ใน TypeScript, Python, Java หรือ C# โดยใช้ตัวเลือก --codegen
  • บริบทการทดสอบแบบแยก — รันเซสชันด้วยแฟล็ก --isolated เพื่อทิ้งสถานะทั้งหมดหลังจากการปิดเบราว์เซอร์แต่ละครั้ง

เอกสาร

Playwright MCP

เซิร์ฟเวอร์ Model Context Protocol (MCP) ที่ให้ความสามารถในการทำงานอัตโนมัติกับเบราว์เซอร์โดยใช้ Playwright เซิร์ฟเวอร์นี้ช่วยให้ LLM สามารถโต้ตอบกับหน้าเว็บผ่านโครงสร้าง accessibility snapshots โดยไม่จำเป็นต้องใช้ภาพหน้าจอหรือโมเดลที่ปรับแต่งด้วยภาพ

Playwright MCP เทียบกับ Playwright CLI

แพ็คเกจนี้ให้อินเทอร์เฟซ MCP เข้ากับ Playwright หากคุณใช้ coding agent คุณอาจได้รับประโยชน์จากการใช้ CLI+SKILLS แทน

  • CLI: Coding agents สมัยใหม่นิยมใช้เวิร์กโฟลว์แบบ CLI ที่แสดงเป็น SKILLs มากกว่า MCP เนื่องจากการเรียกใช้ CLI ประหยัด token มากกว่า: หลีกเลี่ยงการโหลด tool schemas ขนาดใหญ่และ accessibility trees ที่ละเอียดเข้าไปในบริบทของโมเดล ทำให้ agent สามารถทำงานผ่านคำสั่งที่กระชับและออกแบบมาโดยเฉพาะ ทำให้ CLI + SKILLs เหมาะกับ coding agents ที่ต้องจัดการกับงานปริมาณมากซึ่งต้องสมดุลระหว่างการทำงานอัตโนมัติกับเบราว์เซอร์และโค้ดเบสขนาดใหญ่ การทดสอบ และการใช้เหตุผลภายในกรอบบริบทที่จำกัด
    เรียนรู้เพิ่มเติมเกี่ยวกับ Playwright CLI with SKILLS

  • MCP: MCP ยังคงมีความเกี่ยวข้องสำหรับลูป agentic เฉพาะทางที่ได้รับประโยชน์จากสถานะที่คงอยู่ การตรวจสอบเชิงลึก และการใช้เหตุผลซ้ำๆ กับโครงสร้างหน้าเว็บ เช่น การทำงานอัตโนมัติเชิงสำรวจ การทดสอบที่ซ่อมแซมตัวเอง หรือเวิร์กโฟลว์อัตโนมัติระยะยาวที่การรักษาบริบทของเบราว์เซอร์อย่างต่อเนื่องสำคัญกว่าความกังวลเรื่องต้นทุน token

คุณสมบัติหลัก

  • รวดเร็วและน้ำหนักเบา ใช้ accessibility tree ของ Playwright ไม่ใช้อินพุตแบบพิกเซล
  • เป็นมิตรกับ LLM ไม่ต้องใช้โมเดลวิทัศน์ ทำงานบนข้อมูลที่มีโครงสร้างเท่านั้น
  • การใช้งานเครื่องมือที่แน่นอน หลีกเลี่ยงความคลุมเครือที่พบได้ทั่วไปในแนวทางที่ใช้ภาพหน้าจอ

ข้อกำหนด

  • Node.js 18 หรือใหม่กว่า
  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie หรือ MCP client อื่นๆ

เริ่มต้นใช้งาน

ขั้นแรก ติดตั้ง Playwright MCP server กับ client ของคุณ

การกำหนดค่ามาตรฐาน ใช้งานได้กับเครื่องมือส่วนใหญ่:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Install in VS Code Install in VS Code Insiders

Amp

เพิ่มผ่านหน้าจอการตั้งค่า Amp VS Code extension หรือโดยการอัปเดตไฟล์ settings.json ของคุณ:

"amp.mcpServers": {
  "playwright": {
    "command": "npx",
    "args": [
      "@playwright/mcp@latest"
    ]
  }
}

การตั้งค่า Amp CLI:

เพิ่มผ่านคำสั่ง amp mcp add ด้านล่าง

amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity

เพิ่มผ่านการตั้งค่า Antigravity หรือโดยการอัปเดตไฟล์การกำหนดค่าของคุณ:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}
Claude Code

ใช้ Claude Code CLI เพื่อเพิ่ม Playwright MCP server:

claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop

ปฏิบัติตาม คำแนะนำ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน

Cline

ปฏิบัติตามคำแนะนำในส่วน Configuring MCP Servers

ตัวอย่าง: การตั้งค่าในเครื่อง

เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ cline_mcp_settings.json ของคุณ:

{
  "mcpServers": {
    "playwright": {
      "type": "stdio",
      "command": "npx",
      "timeout": 30,
      "args": [
        "-y",
        "@playwright/mcp@latest"
      ],
      "disabled": false
    }
  }
}
Codex

ใช้ Codex CLI เพื่อเพิ่ม Playwright MCP server:

codex mcp add playwright npx "@playwright/mcp@latest"

หรืออีกทางเลือกหนึ่ง สร้างหรือแก้ไขไฟล์การกำหนดค่า ~/.codex/config.toml และเพิ่ม:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบ MCP ของ Codex

Copilot

ใช้ Copilot CLI เพื่อเพิ่ม Playwright MCP server แบบโต้ตอบ:

/mcp add

หรืออีกทางเลือกหนึ่ง สร้างหรือแก้ไขไฟล์การกำหนดค่า ~/.copilot/mcp-config.json และเพิ่ม:

{
  "mcpServers": {
    "playwright": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบ Copilot CLI

Cursor

คลิกปุ่มเพื่อติดตั้ง:

Install in Cursor

หรือติดตั้งด้วยตนเอง:

ไปที่ Cursor Settings -> MCP -> Add new MCP Server ตั้งชื่อตามที่คุณต้องการ ใช้ประเภท command พร้อมคำสั่ง npx @playwright/mcp@latest คุณยังสามารถตรวจสอบการกำหนดค่าหรือเพิ่มอาร์กิวเมนต์เหมือนคำสั่งได้โดยคลิก Edit

Factory

ใช้ Factory CLI เพื่อเพิ่ม Playwright MCP server:

droid mcp add playwright "npx @playwright/mcp@latest"

หรืออีกทางเลือกหนึ่ง พิมพ์ /mcp ภายใน Factory droid เพื่อเปิดอินเทอร์เฟซ UI แบบโต้ตอบสำหรับจัดการ MCP servers

สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบ MCP ของ Factory

Gemini CLI

ปฏิบัติตาม คำแนะนำ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน

Goose

คลิกปุ่มเพื่อติดตั้ง:

Install in Goose

หรือติดตั้งด้วยตนเอง:

ไปที่ Advanced settings -> Extensions -> Add custom extension ตั้งชื่อตามที่คุณต้องการ ใช้ประเภท STDIO และตั้งค่า command เป็น npx @playwright/mcp คลิก "Add Extension"

Grok

ใช้ Grok CLI เพื่อเพิ่ม Playwright MCP server:

grok mcp add playwright -- npx @playwright/mcp@latest

หรืออีกทางเลือกหนึ่ง สร้างหรือแก้ไขไฟล์การกำหนดค่า ~/.grok/config.toml และเพิ่ม:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบ MCP ของ Grok

Junie

เพื่อเพิ่ม Playwright MCP server ใน Junie CLI:

  1. พิมพ์ /mcp
  2. กด Ctrl+A เพื่อเพิ่ม MCP server ใหม่
  3. เลือก Playwright จากรายการ

หรืออีกทางเลือกหนึ่ง เพิ่มใน .junie/mcp/mcp.json:

{
  "mcpServers": {
    "Playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp@latest"
      ]
    }
  }
}

สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบการกำหนดค่า MCP ของ Junie

Kiro

Add to Kiro

ปฏิบัติตาม เอกสารประกอบ MCP Servers ตัวอย่างเช่นใน .kiro/settings/mcp.json:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}
LM Studio

คลิกปุ่มเพื่อติดตั้ง:

Add MCP Server playwright to LM Studio

หรือติดตั้งด้วยตนเอง:

ไปที่ Program ในแถบด้านข้างขวา -> Install -> Edit mcp.json ใช้การกำหนดค่ามาตรฐานด้านบน

opencode

ปฏิบัติตาม เอกสารประกอบ MCP Servers ตัวอย่างเช่นใน ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": [
        "npx",
        "@playwright/mcp@latest"
      ],
      "enabled": true
    }
  }
}

Qodo Gen

เปิดแผงแชท Qodo Gen ใน VSCode หรือ IntelliJ → Connect more tools → + Add new MCP → วางการกำหนดค่ามาตรฐานด้านบน

คลิก Save

VS Code

คลิกปุ่มเพื่อติดตั้ง:

Install in VS Code Install in VS Code Insiders

หรือติดตั้งด้วยตนเอง:

ปฏิบัติตาม คำแนะนำ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน คุณยังสามารถติดตั้ง Playwright MCP server โดยใช้ VS Code CLI:

# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'

หลังการติดตั้ง Playwright MCP server จะพร้อมใช้งานกับ GitHub Copilot agent ของคุณใน VS Code

Warp

ไปที่ Settings -> AI -> Manage MCP Servers -> + Add เพื่อ เพิ่ม MCP Server ใช้การกำหนดค่ามาตรฐานด้านบน

หรืออีกทางเลือกหนึ่ง ใช้คำสั่ง slash /add-mcp ในพรอมต์ Warp และวางการกำหนดค่ามาตรฐานจากด้านบน:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}
Windsurf

ปฏิบัติตาม เอกสารประกอบ MCP ของ Windsurf ใช้การกำหนดค่ามาตรฐานด้านบน

การกำหนดค่า

Playwright MCP server รองรับอาร์กิวเมนต์ต่อไปนี้ สามารถระบุได้ในการกำหนดค่า JSON ด้านบน เป็นส่วนหนึ่งของรายการ "args":

ตัวเลือกคำอธิบาย
--allowed-hosts <hosts...>รายการโฮสต์ที่คั่นด้วยเครื่องหมายจุลภาคซึ่งเซิร์ฟเวอร์นี้ได้รับอนุญาตให้ให้บริการได้ ค่าเริ่มต้นคือโฮสต์ที่เซิร์ฟเวอร์ผูกอยู่ ใช้ '*' เพื่อปิดการตรวจสอบโฮสต์
env PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins รายการต้นทางที่เชื่อถือได้ซึ่งคั่นด้วยเครื่องหมายอัฒภาคเพื่ออนุญาตให้เบราว์เซอร์ร้องขอ ค่าเริ่มต้นคืออนุญาตทั้งหมด ข้อสำคัญ: ไม่ใช่ ขอบเขตความปลอดภัย และ ไม่มีผล ต่อการเปลี่ยนเส้นทาง
env PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accessอนุญาตการเข้าถึงไฟล์ภายนอกโฟลเดอร์รากของพื้นที่ทำงาน นอกจากนี้ยังอนุญาตการเข้าถึง URL แบบ file:// อย่างไม่จำกัด โดยค่าเริ่มต้น การเข้าถึงระบบไฟล์จะถูกจำกัดเฉพาะโฟลเดอร์รากของพื้นที่ทำงาน (หรือไดเรกทอรีปัจจุบันหากไม่ได้กำหนดราก) เท่านั้น และการนำทางไปยัง URL แบบ file:// จะถูกบล็อก
env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins รายการต้นทางที่คั่นด้วยเครื่องหมายอัฒภาคเพื่อบล็อกไม่ให้เบราว์เซอร์ร้องขอ รายการบล็อกจะถูกประเมินก่อนรายการอนุญาต หากใช้โดยไม่มีรายการอนุญาต คำขอที่ไม่ตรงกับรายการบล็อกจะยังคงได้รับอนุญาต ข้อสำคัญ: ไม่ใช่ ขอบเขตความปลอดภัย และ ไม่มีผล ต่อการเปลี่ยนเส้นทาง
env PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersบล็อก service workers
env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browser เบราว์เซอร์หรือช่องทาง chrome ที่จะใช้ ค่าที่เป็นไปได้: chrome, firefox, webkit, msedge.
env PLAYWRIGHT_MCP_BROWSER
--caps รายการความสามารถเพิ่มเติมที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเปิดใช้งาน ค่าที่เป็นไปได้: vision, pdf, devtools.
env PLAYWRIGHT_MCP_CAPS
--cdp-endpoint จุดสิ้นสุด CDP ที่จะเชื่อมต่อ
env PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-header <headers...>ส่วนหัว CDP ที่จะส่งพร้อมกับคำขอเชื่อมต่อ สามารถระบุได้หลายรายการ
env PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeout ระยะหมดเวลาเป็นมิลลิวินาทีสำหรับการเชื่อมต่อกับจุดสิ้นสุด CDP ค่าเริ่มต้นคือ 30000ms
env PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegen ระบุภาษาที่ใช้สำหรับการสร้างโค้ด ค่าที่เป็นไปได้: "typescript", "python", "java", "csharp", "none" ค่าเริ่มต้นคือ "typescript"
env PLAYWRIGHT_MCP_CODEGEN
--config เส้นทางไปยังไฟล์การกำหนดค่า
env PLAYWRIGHT_MCP_CONFIG
--console-level ระดับของข้อความคอนโซลที่จะส่งคืน: "error", "warning", "info", "debug" แต่ละระดับจะรวมข้อความของระดับที่รุนแรงกว่า
env PLAYWRIGHT_MCP_CONSOLE_LEVEL
--device อุปกรณ์ที่จะจำลอง เช่น: "iPhone 15"
env PLAYWRIGHT_MCP_DEVICE
--mobileจำลองอุปกรณ์มือถือทั่วไป (Pixel 10 สำหรับ Chromium, iPhone 17 สำหรับ WebKit) หน้าเว็บมือถือมักจะเบากว่า ซึ่งช่วยประหยัดโทเค็น ไม่สามารถใช้ร่วมกับ --device ได้
env PLAYWRIGHT_MCP_MOBILE
--executable-path เส้นทางไปยังไฟล์ปฏิบัติการของเบราว์เซอร์
env PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extensionเชื่อมต่อกับอินสแตนซ์เบราว์เซอร์ที่กำลังทำงานอยู่ (เฉพาะ Edge/Chrome) ต้องติดตั้ง "Playwright Extension"
env PLAYWRIGHT_MCP_EXTENSION
--endpoint จุดสิ้นสุดเบราว์เซอร์ที่ผูกไว้เพื่อเชื่อมต่อ
env PLAYWRIGHT_MCP_ENDPOINT
--grant-permissions <permissions...>รายการสิทธิ์ที่จะอนุญาตให้กับบริบทเบราว์เซอร์ เช่น "geolocation", "clipboard-read", "clipboard-write"
env PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headlessเรียกใช้เบราว์เซอร์ในโหมด headless โดยค่าเริ่มต้นจะแสดงหน้าต่าง
env PLAYWRIGHT_MCP_HEADLESS
--host โฮสต์ที่จะผูกเซิร์ฟเวอร์ ค่าเริ่มต้นคือ localhost ใช้ 0.0.0.0 เพื่อผูกกับอินเทอร์เฟซทั้งหมด
env PLAYWRIGHT_MCP_HOST
--ignore-https-errorsไม่สนใจข้อผิดพลาด https
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>เส้นทางไปยังไฟล์ TypeScript ที่จะประเมินบนออบเจกต์หน้า Playwright
env PLAYWRIGHT_MCP_INIT_PAGE
--init-script <path...>เส้นทางไปยังไฟล์ JavaScript ที่จะเพิ่มเป็นสคริปต์เริ่มต้น สคริปต์จะถูกประเมินในทุกหน้าก่อนสคริปต์ใดๆ ของหน้านั้น สามารถระบุได้หลายครั้ง
env PLAYWRIGHT_MCP_INIT_SCRIPT
--isolatedเก็บโปรไฟล์เบราว์เซอร์ไว้ในหน่วยความจำ อย่าบันทึกลงดิสก์
env PLAYWRIGHT_MCP_ISOLATED
--image-responses ว่าจะส่งการตอบสนองรูปภาพไปยังไคลเอ็นต์หรือไม่ สามารถเป็น "allow" หรือ "omit" ค่าเริ่มต้นคือ "allow"
env PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandboxปิดใช้งาน sandbox สำหรับทุกประเภทกระบวนการที่ปกติถูก sandbox
env PLAYWRIGHT_MCP_NO_SANDBOX
--output-dir เส้นทางไปยังไดเรกทอรีสำหรับไฟล์เอาต์พุต
env PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size เกณฑ์สำหรับการไล่ไฟล์เอาต์พุตเก่าออก เป็นไบต์
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--port พอร์ตที่ใช้ฟังสำหรับการส่งข้อมูล SSE
env PLAYWRIGHT_MCP_PORT
--proxy-bypass โดเมนที่คั่นด้วยเครื่องหมายจุลภาคเพื่อข้ามพร็อกซี เช่น ".com,chromium.org,.domain.com"
env PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-server ระบุเซิร์ฟเวอร์พร็อกซี เช่น "http://myproxy:3128" หรือ "socks5://myproxy:8080"
env PLAYWRIGHT_MCP_PROXY_SERVER
--sandboxเปิดใช้งาน sandbox สำหรับทุกประเภทกระบวนการที่ปกติไม่ถูก sandbox
env PLAYWRIGHT_MCP_SANDBOX
--save-sessionว่าจะบันทึกเซสชัน Playwright MCP ลงในไดเรกทอรีเอาต์พุตหรือไม่
env PLAYWRIGHT_MCP_SAVE_SESSION
--secrets เส้นทางไปยังไฟล์ที่มีความลับในรูปแบบ dotenv
env PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-contextใช้บริบทเบราว์เซอร์เดียวกันระหว่างไคลเอ็นต์ HTTP ที่เชื่อมต่อทั้งหมด
env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-boxesรวมกรอบขอบเขตของแต่ละองค์ประกอบเป็น [box=x,y,width,height] ในสแนปช็อต พิกัดสัมพันธ์กับวิวพอร์ต เป็นพิกเซล CSS
env PLAYWRIGHT_MCP_SNAPSHOT_BOXES
--snapshot-mode เมื่อถ่ายสแนปช็อตสำหรับการตอบสนอง ระบุโหมดที่จะใช้ สามารถเป็น "full" หรือ "none" ค่าเริ่มต้นคือ "full"
env PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state เส้นทางไปยังไฟล์สถานะการจัดเก็บสำหรับเซสชันแบบแยก
env PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute ระบุแอตทริบิวต์ที่ใช้สำหรับ test ids ค่าเริ่มต้นคือ "data-testid"
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action ระบุระยะหมดเวลาการดำเนินการเป็นมิลลิวินาที ค่าเริ่มต้นคือ 5000ms
env PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation ระบุระยะหมดเวลาการนำทางเป็นมิลลิวินาที ค่าเริ่มต้นคือ 60000ms
env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--timeout-settle รอนานเท่าใดหลังจากการดำเนินการแต่ละครั้งเพื่อให้งานที่ถูกกระตุ้นสงบลง เป็นมิลลิวินาที ค่าเริ่มต้นคือ 500ms
env PLAYWRIGHT_MCP_TIMEOUT_SETTLE
--user-agent ระบุสตริง user agent
env PLAYWRIGHT_MCP_USER_AGENT
--user-data-dir เส้นทางไปยังไดเรกทอรีข้อมูลผู้ใช้ หากไม่ระบุ จะสร้างไดเรกทอรีชั่วคราว
env PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-size ระบุขนาดวิวพอร์ตเบราว์เซอร์เป็นพิกเซล เช่น "1280x720"
env PLAYWRIGHT_MCP_VIEWPORT_SIZE

โปรไฟล์ผู้ใช้

คุณสามารถเรียกใช้ Playwright MCP ด้วยโปรไฟล์ถาวรเหมือนเบราว์เซอร์ทั่วไป (ค่าเริ่มต้น) ในบริบทแบบแยกสำหรับเซสชันการทดสอบ หรือเชื่อมต่อกับเบราว์เซอร์ที่มีอยู่ของคุณโดยใช้ส่วนขยายเบราว์เซอร์

โปรไฟล์ถาวร

ข้อมูลที่เข้าสู่ระบบทั้งหมดจะถูกเก็บไว้ในโปรไฟล์ถาวร คุณสามารถลบระหว่างเซสชันได้หากต้องการล้างสถานะออฟไลน์ โปรไฟล์ถาวรจะอยู่ที่ตำแหน่งต่อไปนี้ และคุณสามารถแทนที่ได้ด้วยอาร์กิวเมนต์ --user-data-dir

# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}

# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}

# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}

{workspace-hash} มาจากโฟลเดอร์รากพื้นที่ทำงานของไคลเอ็นต์ MCP ดังนั้นโปรเจกต์ที่แตกต่างกันจะได้รับโปรไฟล์แยกกันโดยอัตโนมัติ

[!IMPORTANT] โปรไฟล์ถาวรสามารถใช้ได้กับอินสแตนซ์เบราว์เซอร์เดียวในแต่ละครั้ง ดังนั้นไคลเอ็นต์ MCP พร้อมกันที่ใช้พื้นที่ทำงานเดียวกันจะขัดแย้งกัน หากต้องการเรียกใช้ไคลเอ็นต์หลายตัวพร้อมกัน ให้เริ่มไคลเอ็นต์เพิ่มเติมแต่ละตัวด้วย --isolated หรือชี้ไปที่ --user-data-dir ที่แตกต่างกัน

แบบแยก

ในโหมดแยก แต่ละเซสชันจะเริ่มต้นในโปรไฟล์แบบแยก ทุกครั้งที่คุณขอให้ MCP ปิดเบราว์เซอร์ เซสชันจะถูกปิดและสถานะการจัดเก็บทั้งหมดสำหรับเซสชันนี้จะหายไป คุณสามารถให้สถานะการจัดเก็บเริ่มต้น แก่เบราว์เซอร์ผ่าน contextOptions ของการกำหนดค่าหรือผ่านอาร์กิวเมนต์ --storage-state เรียนรู้เพิ่มเติมเกี่ยวกับสถานะการจัดเก็บ ที่นี่

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--isolated",
        "--storage-state={path/to/storage.json}"
      ]
    }
  }
}

ส่วนขยายเบราว์เซอร์

ส่วนขยาย Chrome ของ Playwright MCP ช่วยให้คุณเชื่อมต่อกับแท็บเบราว์เซอร์ที่มีอยู่และใช้ประโยชน์จากเซสชันที่เข้าสู่ระบบและสถานะเบราว์เซอร์ของคุณ ดู microsoft/playwright › packages/extension สำหรับคำแนะนำการติดตั้งและการตั้งค่า

สถานะเริ่มต้น

มีหลายวิธีในการให้สถานะเริ่มต้นแก่บริบทเบราว์เซอร์หรือหน้า

สำหรับสถานะการจัดเก็บ คุณสามารถ:

  • เริ่มต้นด้วยไดเรกทอรีข้อมูลผู้ใช้โดยใช้อาร์กิวเมนต์ --user-data-dir ซึ่งจะคงข้อมูลเบราว์เซอร์ทั้งหมดระหว่างเซสชัน
  • เริ่มต้นด้วยไฟล์สถานะการจัดเก็บโดยใช้อาร์กิวเมนต์ --storage-state ซึ่งจะโหลดคุกกี้และที่จัดเก็บในเครื่องจากไฟล์ลงในบริบทเบราว์เซอร์แบบแยก

สำหรับสถานะหน้า คุณสามารถใช้:

  • --init-page เพื่อชี้ไปยังไฟล์ TypeScript ที่จะประเมินบนออบเจกต์หน้า Playwright ซึ่งช่วยให้คุณเรียกใช้โค้ดใดๆ เพื่อตั้งค่าหน้า
// init-page.ts
export default async ({ page }) => {
  await page.context().grantPermissions(['geolocation']);
  await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
  await page.setViewportSize({ width: 1280, height: 720 });
};
  • --init-script เพื่อชี้ไปยังไฟล์ JavaScript ที่จะเพิ่มเป็นสคริปต์เริ่มต้น สคริปต์จะถูกประเมินในทุกหน้าก่อนสคริปต์ใดๆ ของหน้านั้น ซึ่งมีประโยชน์สำหรับการแทนที่ API ของเบราว์เซอร์หรือการตั้งค่าสภาพแวดล้อม
// init-script.js
window.isPlaywrightMCP = true;

ไฟล์การกำหนดค่า

เซิร์ฟเวอร์ Playwright MCP สามารถกำหนดค่าได้โดยใช้ไฟล์การกำหนดค่า JSON คุณสามารถระบุไฟล์การกำหนดค่า โดยใช้ตัวเลือกบรรทัดคำสั่ง --config:

npx @playwright/mcp@latest --config path/to/config.json
โครงร่างไฟล์การกำหนดค่า
{
  /**
   * The browser to use.
   */
  browser?: {
    /**
     * The type of browser to use.
     */
    browserName?: 'chromium' | 'firefox' | 'webkit';

    /**
     * Keep the browser profile in memory, do not save it to disk.
     */
    isolated?: boolean;

    /**
     * Path to a user data directory for browser profile persistence.
     * Temporary directory is created by default.
     */
    userDataDir?: string;

    /**
     * Launch options passed to
     * @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
     *
     * This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
     */
    launchOptions?: playwright.LaunchOptions;

    /**
     * Context options for the browser context.
     *
     * This is useful for settings options like `viewport`.
     */
    contextOptions?: playwright.BrowserContextOptions;

    /**
     * Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
     */
    cdpEndpoint?: string;

    /**
     * CDP headers to send with the connect request.
     */
    cdpHeaders?: Record<string, string>;

    /**
     * Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
     */
    cdpTimeout?: number;

    /**
     * Remote endpoint to connect to an existing Playwright server. May be a
     * WebSocket URL string, or a [ConnectOptions] object that mirrors the
     * `connectOptions` shape used by the test runner. When passed as an object,
     * `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
     * underlying connect call.
     */
    remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };

    /**
     * Paths to TypeScript files to add as initialization scripts for Playwright page.
     */
    initPage?: string[];

    /**
     * Paths to JavaScript files to add as initialization scripts.
     * The scripts will be evaluated in every page before any of the page's scripts.
     */
    initScript?: string[];
  },

  /**
   * Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
   * config is ignored.
   * Requires the "Playwright Extension" to be installed.
   */
  extension?: boolean;

  server?: {
    /**
     * The port to listen on for SSE or MCP transport.
     */
    port?: number;

    /**
     * The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
     */
    host?: string;

    /**
     * The hosts this server is allowed to serve from. Defaults to the host server is bound to.
     * This is not for CORS, but rather for the DNS rebinding protection.
     */
    allowedHosts?: string[];
  },

  /**
   * List of enabled tool capabilities. Possible values:
   *   - 'core': Core browser automation features.
   *   - 'pdf': PDF generation and manipulation.
   *   - 'vision': Coordinate-based interactions.
   *   - 'devtools': Developer tools features.
   */
  capabilities?: ToolCapability[];

  /**
   * Whether to save the Playwright session into the output directory.
   */
  saveSession?: boolean;

  /**
   * Reuse the same browser context between all connected HTTP clients.
   */
  sharedBrowserContext?: boolean;

  /**
   * Secrets are used to replace matching plain text in the tool responses to prevent the LLM
   * from accidentally getting sensitive data. It is a convenience and not a security feature,
   * make sure to always examine information coming in and from the tool on the client.
   */
  secrets?: Record<string, string>;

  /**
   * The directory to save output files.
   */
  outputDir?: string;

  /**
   * Threshold for evicting old output files, in bytes.
   */
  outputMaxSize?: number;

  console?: {
    /**
     * The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
     */
    level?: 'error' | 'warning' | 'info' | 'debug';
  },

  network?: {
    /**
     * List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    allowedOrigins?: string[];

    /**
     * List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    blockedOrigins?: string[];
  };

  /**
   * Specify the attribute to use for test ids, defaults to "data-testid".
   */
  testIdAttribute?: string;

  timeouts?: {
    /*
     * Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
     */
    action?: number;

    /*
     * Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
     */
    navigation?: number;

    /**
     * Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
     */
    expect?: number;

    /**
     * How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
     */
    settle?: number;
  };

  /**
   * Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
   */
  imageResponses?: 'allow' | 'omit';

  snapshot?: {
    /**
     * When taking snapshots for responses, specifies the mode to use.
     */
    mode?: 'full' | 'none';

    /**
     * Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
     * Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
     */
    boxes?: boolean;
  };

  /**
   * allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
   * wandering outside its intended workspace. It is a convenience defense to catch unintended
   * file access, not a secure boundary; a deliberate attempt to reach other directories can be
   * easily worked around, so always rely on client-level permissions for true security.
   */
  allowUnrestrictedFileAccess?: boolean;

  /**
   * Specify the language to use for code generation.
   */
  codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}

เซิร์ฟเวอร์ MCP แบบสแตนด์อโลน

เมื่อเรียกใช้เบราว์เซอร์แบบมีหน้าต่างบนระบบที่ไม่มีจอแสดงผลหรือจากกระบวนการทำงานของ IDE ให้เรียกใช้เซิร์ฟเวอร์ MCP จากสภาพแวดล้อมที่มี DISPLAY และส่งแฟล็ก --port เพื่อเปิดใช้งานการส่งข้อมูล HTTP

npx @playwright/mcp@latest --port 8931

จากนั้นในการกำหนดค่าไคลเอ็นต์ MCP ให้ตั้งค่า url เป็นจุดสิ้นสุด HTTP:

{
  "mcpServers": {
    "playwright": {
      "url": "http://localhost:8931/mcp"
    }
  }
}

ความปลอดภัย

Playwright MCP ไม่ใช่ ขอบเขตความปลอดภัย ดู แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยของ MCP สำหรับคำแนะนำในการรักษาความปลอดภัยการปรับใช้ของคุณ

Docker

หมายเหตุ: การใช้งาน Docker ในขณะนี้รองรับเฉพาะ chromium แบบ headless เท่านั้น

{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
    }
  }
}

หรือหากคุณต้องการเรียกใช้คอนเทนเนอร์เป็นบริการระยะยาวแทนที่จะให้ไคลเอ็นต์ MCP สร้างขึ้น ให้ใช้:

docker run -d -i --rm --init --pull=always \
  --entrypoint node \
  --name playwright \
  -p 8931:8931 \
  mcr.microsoft.com/playwright/mcp \
  /app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0

เซิร์ฟเวอร์จะฟังบนพอร์ตโฮสต์ 8931 และสามารถเข้าถึงได้โดยไคลเอ็นต์ MCP ใดๆ

คุณสามารถสร้างอิมเมจ Docker ได้ด้วยตัวเอง

docker build -t mcr.microsoft.com/playwright/mcp .
การใช้งานเชิงโปรแกรม
import http from 'http';

import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';

http.createServer(async (req, res) => {
  // ...

  // Creates a headless Playwright MCP server with SSE transport
  const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
  const transport = new SSEServerTransport('/messages', res);
  await connection.connect(transport);

  // ...
});

เครื่องมือ

การทำงานอัตโนมัติหลัก
  • browser_click
    • ชื่อ: คลิก
    • คำอธิบาย: ดำเนินการคลิกบนหน้าเว็บ
    • พารามิเตอร์:
      • element (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • doubleClick (บูลีน, ไม่บังคับ): ระบุว่าจะคลิกสองครั้งแทนการคลิกครั้งเดียวหรือไม่
      • button (สตริง, ไม่บังคับ): ปุ่มที่จะคลิก ค่าเริ่มต้นคือปุ่มซ้าย
      • modifiers (อาร์เรย์, ไม่บังคับ): ปุ่มปรับแต่งที่จะกด
    • อ่านอย่างเดียว: false
  • browser_close
    • ชื่อ: ปิดเบราว์เซอร์
    • คำอธิบาย: ปิดหน้า
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: false
  • browser_console_messages
    • ชื่อ: รับข้อความคอนโซล
    • คำอธิบาย: ส่งคืนข้อความคอนโซลทั้งหมด
    • พารามิเตอร์:
      • level (สตริง): ระดับของข้อความคอนโซลที่จะส่งคืน แต่ละระดับรวมข้อความของระดับที่รุนแรงกว่า ค่าเริ่มต้นคือ "info"
      • all (บูลีน, ไม่บังคับ): ส่งคืนข้อความคอนโซลทั้งหมดตั้งแต่เริ่มต้นเซสชัน ไม่ใช่เฉพาะตั้งแต่การนำทางครั้งล่าสุด ค่าเริ่มต้นคือ false
      • filename (สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกข้อความคอนโซล หากไม่ระบุ ข้อความจะถูกส่งคืนเป็นข้อความ
    • อ่านอย่างเดียว: true
  • browser_drag
    • ชื่อ: ลากเมาส์
    • คำอธิบาย: ดำเนินการลากและวางระหว่างสององค์ประกอบ
    • พารามิเตอร์:
      • startElement (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบต้นทางที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • startTarget (สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • endElement (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบเป้าหมายที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • endTarget (สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
    • อ่านอย่างเดียว: false
  • browser_drop
    • ชื่อ: วางไฟล์หรือข้อมูลลงบนองค์ประกอบ
    • คำอธิบาย: วางไฟล์หรือข้อมูลประเภท MIME ลงบนองค์ประกอบ เหมือนกับถูกลากจากภายนอกหน้า ต้องระบุอย่างน้อยหนึ่งใน "paths" หรือ "data"
    • พารามิเตอร์:
      • element (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • paths (อาร์เรย์, ไม่บังคับ): เส้นทางสัมบูรณ์ไปยังไฟล์ที่จะวางลงบนองค์ประกอบ
      • data (ออบเจกต์, ไม่บังคับ): ข้อมูลที่จะวาง เป็นแผนที่ของประเภท MIME ไปยังค่าสตริง (เช่น {"text/plain": "hello", "text/uri-list": "https://example.com"})
    • อ่านอย่างเดียว: false
  • browser_evaluate
    • ชื่อ: ประเมิน JavaScript
    • คำอธิบาย: ประเมินนิพจน์ JavaScript บนหน้าหรือองค์ประกอบ
    • พารามิเตอร์:
      • element (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (สตริง, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • function (สตริง): () => { /* code / } หรือ (element) => { / code */ } เมื่อระบุองค์ประกอบ
      • filename (สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกผลลัพธ์ หากไม่ระบุ ผลลัพธ์จะถูกส่งคืนเป็นข้อความ
    • อ่านอย่างเดียว: false
  • browser_file_upload
    • ชื่อ: อัปโหลดไฟล์
    • คำอธิบาย: อัปโหลดไฟล์หนึ่งหรือหลายไฟล์
    • พารามิเตอร์:
      • paths (อาร์เรย์, ไม่บังคับ): เส้นทางสัมบูรณ์ไปยังไฟล์ที่จะอัปโหลด สามารถเป็นไฟล์เดียวหรือหลายไฟล์ หากละเว้น ตัวเลือกไฟล์จะถูกยกเลิก
    • อ่านอย่างเดียว: false
  • browser_fill_form
    • ชื่อ: กรอกแบบฟอร์ม
    • คำอธิบาย: กรอกหลายช่องฟอร์ม
    • พารามิเตอร์:
      • fields (อาร์เรย์): ช่องที่จะกรอก
    • อ่านอย่างเดียว: false
  • browser_find
    • ชื่อ: ค้นหาในสแนปช็อตของหน้า
    • คำอธิบาย: ค้นหาข้อความหรือนิพจน์ปกติในสแนปช็อตการเข้าถึงของหน้าปัจจุบัน ส่งคืนโหนดสแนปช็อตที่ตรงกันพร้อมบริบทรอบข้างสองสามบรรทัด (เหมือนตัวอย่างการค้นหา) แต่ละรายการแสดงภายใต้เส้นทางจากรากของทรี ซึ่งถูกกว่าการจับสแนปช็อตทั้งหมดเมื่อคุณเพียงต้องการค้นหาองค์ประกอบและ ref ของมัน
    • พารามิเตอร์:
      • text (สตริง, ไม่บังคับ): ข้อความธรรมดาที่จะค้นหาในสแนปช็อตของหน้า (การจับคู่สตริงย่อยที่ไม่คำนึงถึงตัวพิมพ์เล็กใหญ่) ระบุข้อความหรือ regex อย่างใดอย่างหนึ่ง ไม่ใช่ทั้งสองอย่าง
      • regex (สตริง, ไม่บังคับ): นิพจน์ปกติที่จะค้นหาในสแนปช็อตของหน้า การจับคู่คำนึงถึงตัวพิมพ์เล็กใหญ่โดยค่าเริ่มต้น ครอบรูปแบบด้วยเครื่องหมายทับเพื่อเพิ่มแฟล็ก เช่น "/error/i" สำหรับไม่คำนึงถึงตัวพิมพ์เล็กใหญ่ ระบุข้อความหรือ regex อย่างใดอย่างหนึ่ง ไม่ใช่ทั้งสองอย่าง
    • อ่านอย่างเดียว: true
  • browser_handle_dialog
    • ชื่อ: จัดการไดอะล็อก
    • คำอธิบาย: จัดการไดอะล็อก
    • พารามิเตอร์:
      • accept (บูลีน): ระบุว่าจะยอมรับไดอะล็อกหรือไม่
      • promptText (สตริง, ไม่บังคับ): ข้อความของพรอมป์ในกรณีที่เป็นไดอะล็อกพรอมป์
    • อ่านอย่างเดียว: false
  • browser_hover
    • ชื่อ: โฮเวอร์เมาส์
    • คำอธิบาย: โฮเวอร์เหนือองค์ประกอบบนหน้า
    • พารามิเตอร์:
      • element (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
    • อ่านอย่างเดียว: false
  • browser_navigate
    • ชื่อ: นำทางไปยัง URL
    • คำอธิบาย: นำทางไปยัง URL
    • พารามิเตอร์:
      • url (สตริง): URL ที่จะนำทางไป
    • อ่านอย่างเดียว: false
  • browser_navigate_back
    • ชื่อ: กลับไป
    • คำอธิบาย: กลับไปยังหน้าก่อนหน้าในประวัติ
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: false
  • browser_network_request
    • ชื่อ: แสดงรายละเอียดคำขอเครือข่าย
    • คำอธิบาย: ส่งคืนรายละเอียดทั้งหมด (ส่วนหัวและเนื้อหา) ของคำขอเครือข่ายเดียว หรือส่วนเดียวหากตั้งค่า part ใช้หมายเลขจาก browser_network_requests
    • พารามิเตอร์:
      • index (จำนวนเต็ม): ดัชนี 1-based ของคำขอ ตามที่พิมพ์โดย browser_network_requests
      • part (สตริง, ไม่บังคับ): ส่งคืนเฉพาะส่วนนี้ของคำขอ ละเว้นเพื่อส่งคืนรายละเอียดทั้งหมด
      • filename (สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกผลลัพธ์ หากไม่ระบุ ผลลัพธ์จะถูกส่งคืนเป็นข้อความ
    • อ่านอย่างเดียว: true
  • browser_network_requests
    • ชื่อ: รายการคำขอเครือข่าย
    • คำอธิบาย: ส่งคืนรายการหมายเลขของคำขอเครือข่ายตั้งแต่โหลดหน้า ใช้ browser_network_request พร้อมหมายเลขเพื่อรับรายละเอียดทั้งหมด
    • พารามิเตอร์:
      • static (บูลีน): ระบุว่าจะรวมทรัพยากรคงที่ที่สำเร็จ เช่น รูปภาพ ฟอนต์ สคริปต์ ฯลฯ หรือไม่ ค่าเริ่มต้นคือ false
      • filter (สตริง, ไม่บังคับ): ส่งคืนเฉพาะคำขอที่ URL ตรงกับ regexp นี้ (เช่น "/api/.*user")
      • filename (สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกคำขอเครือข่าย หากไม่ระบุ คำขอจะถูกส่งคืนเป็นข้อความ
    • อ่านอย่างเดียว: true
  • browser_press_key
    • ชื่อ: กดปุ่ม
    • คำอธิบาย: กดปุ่มบนแป้นพิมพ์
    • พารามิเตอร์:
      • key (สตริง): ชื่อของปุ่มที่จะกดหรืออักขระที่จะสร้าง เช่น ArrowLeft หรือ a
    • อ่านอย่างเดียว: false
  • browser_resize
    • ชื่อ: ปรับขนาดหน้าต่างเบราว์เซอร์
    • คำอธิบาย: ปรับขนาดหน้าต่างเบราว์เซอร์
    • พารามิเตอร์:
      • width (ตัวเลข): ความกว้างของหน้าต่างเบราว์เซอร์
      • height (ตัวเลข): ความสูงของหน้าต่างเบราว์เซอร์
    • อ่านอย่างเดียว: false
  • browser_run_code_unsafe
    • ชื่อ: รันโค้ด Playwright (ไม่ปลอดภัย)
    • คำอธิบาย: รันโค้ดสั้นๆ ของ Playwright ไม่ปลอดภัย: ดำเนินการ JavaScript ตามอำเภอใจในกระบวนการเซิร์ฟเวอร์ Playwright และเทียบเท่ากับ RCE
    • พารามิเตอร์:
      • code (สตริง, ไม่บังคับ): ฟังก์ชัน JavaScript ที่มีโค้ด Playwright ที่จะดำเนินการ จะถูกเรียกด้วยอาร์กิวเมนต์เดียวคือ page ซึ่งคุณสามารถใช้สำหรับการโต้ตอบกับหน้าใดก็ได้ ตัวอย่างเช่น: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (สตริง, ไม่บังคับ): โหลดโค้ดจากไฟล์ที่ระบุ หากระบุทั้งโค้ดและชื่อไฟล์ โค้ดจะถูกละเว้น
    • อ่านอย่างเดียว: false
  • browser_select_option
    • ชื่อ: เลือกตัวเลือก
    • คำอธิบาย: เลือกตัวเลือกในดรอปดาวน์
    • พารามิเตอร์:
      • element (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • values (อาร์เรย์): อาร์เรย์ของค่าที่จะเลือกในดรอปดาวน์ สามารถเป็นค่าเดียวหรือหลายค่า
    • อ่านอย่างเดียว: false
  • browser_snapshot
    • ชื่อ: สแนปช็อตของหน้า
    • คำอธิบาย: จับสแนปช็อตการเข้าถึงของหน้าปัจจุบัน ดีกว่าการจับภาพหน้าจอ
    • พารามิเตอร์:
      • target (สตริง, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • filename (สตริง, ไม่บังคับ): บันทึกสแนปช็อตเป็นไฟล์ markdown แทนการส่งคืนในการตอบสนอง
      • depth (ตัวเลข, ไม่บังคับ): จำกัดความลึกของทรีสแนปช็อต
      • boxes (บูลีน, ไม่บังคับ): รวมกรอบขอบเขตของแต่ละองค์ประกอบเป็น [box=x,y,width,height] ในสแนปช็อต พิกัดสัมพันธ์กับวิวพอร์ต ในหน่วยพิกเซล CSS (Element.getBoundingClientRect)
    • อ่านอย่างเดียว: true
  • browser_take_screenshot
    • ชื่อ: ถ่ายภาพหน้าจอ
    • คำอธิบาย: ถ่ายภาพหน้าจอของหน้าปัจจุบัน คุณไม่สามารถดำเนินการตามภาพหน้าจอได้ ใช้ browser_snapshot สำหรับการดำเนินการ
    • พารามิเตอร์:
      • element (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (สตริง, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • type (สตริง, ไม่บังคับ): รูปแบบภาพสำหรับภาพหน้าจอ หากไม่ตั้งค่า จะอนุมานจากนามสกุลไฟล์ มิฉะนั้นเป็น png
      • filename (สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกภาพหน้าจอ ค่าเริ่มต้นคือ page-{timestamp}.{png|jpeg|webp} หากไม่ระบุ ควรใช้ชื่อไฟล์สัมพัทธ์เพื่อให้อยู่ในไดเรกทอรีเอาต์พุต
      • fullPage (บูลีน, ไม่บังคับ): เมื่อเป็น true จะถ่ายภาพหน้าจอของหน้าทั้งหมดที่เลื่อนได้ แทนที่จะเป็นวิวพอร์ตที่มองเห็นในปัจจุบัน ไม่สามารถใช้กับภาพหน้าจอองค์ประกอบได้
      • scale (สตริง): สเกลความละเอียดของภาพ "css" สร้างภาพหน้าจอขนาดเป็นพิกเซล CSS (เล็กกว่า สอดคล้องกันในอุปกรณ์ต่างๆ) "device" สร้างภาพหน้าจอความละเอียดสูงโดยใช้พิกเซลอุปกรณ์ (ใหญ่กว่า คำนึงถึงอัตราส่วนพิกเซลอุปกรณ์) ค่าเริ่มต้นคือ css
    • อ่านอย่างเดียว: true
  • browser_type
    • ชื่อ: พิมพ์ข้อความ
    • คำอธิบาย: พิมพ์ข้อความลงในองค์ประกอบที่แก้ไขได้
    • พารามิเตอร์:
      • element (สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • text (สตริง): ข้อความที่จะพิมพ์ลงในองค์ประกอบ
      • submit (บูลีน, ไม่บังคับ): ระบุว่าจะส่งข้อความที่ป้อน (กด Enter หลังจาก) หรือไม่
      • slowly (บูลีน, ไม่บังคับ): ระบุว่าจะพิมพ์ทีละอักขระหรือไม่ มีประโยชน์สำหรับการเรียกใช้ตัวจัดการคีย์ในหน้า โดยค่าเริ่มต้นข้อความทั้งหมดจะถูกกรอกในครั้งเดียว
    • อ่านอย่างเดียว: false
  • browser_wait_for
    • ชื่อ: รอ
    • คำอธิบาย: รอให้ข้อความปรากฏหรือหายไป หรือรอตามเวลาที่กำหนด
    • พารามิเตอร์:
      • time (number, ไม่บังคับ): เวลาที่จะรอเป็นวินาที
      • text (string, ไม่บังคับ): ข้อความที่ต้องการรอ
      • textGone (string, ไม่บังคับ): ข้อความที่ต้องการรอให้หายไป
    • อ่านอย่างเดียว: false
การจัดการแท็บ
  • browser_tabs
    • ชื่อ: จัดการแท็บ
    • คำอธิบาย: แสดงรายการ, สร้าง, ปิด, หรือเลือกแท็บเบราว์เซอร์
    • พารามิเตอร์:
      • action (string): การดำเนินการที่จะทำ
      • index (number, ไม่บังคับ): ดัชนีแท็บ ใช้สำหรับปิด/เลือก หากไม่ระบุสำหรับการปิด แท็บปัจจุบันจะถูกปิด
      • url (string, ไม่บังคับ): URL ที่จะนำทางในแท็บใหม่ ใช้สำหรับสร้างแท็บใหม่
    • อ่านอย่างเดียว: false
การติดตั้งเบราว์เซอร์
การกำหนดค่า (เลือกใช้ผ่าน --caps=config)
  • browser_get_config
    • ชื่อ: รับการกำหนดค่า
    • คำอธิบาย: รับการกำหนดค่าสุดท้ายที่แก้ไขแล้วหลังจากการรวมตัวเลือก CLI, ตัวแปรสภาพแวดล้อม และไฟล์การกำหนดค่า
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
เครือข่าย (เลือกใช้ผ่าน --caps=network)
  • browser_network_state_set
    • ชื่อ: ตั้งค่าสถานะเครือข่าย
    • คำอธิบาย: ตั้งค่าสถานะเครือข่ายของเบราว์เซอร์เป็นออนไลน์หรือออฟไลน์ เมื่อออฟไลน์ คำขอเครือข่ายทั้งหมดจะล้มเหลว
    • พารามิเตอร์:
      • state (string): ตั้งเป็น "offline" เพื่อจำลองโหมดออฟไลน์, "online" เพื่อคืนค่าการเชื่อมต่อเครือข่าย
    • อ่านอย่างเดียว: false
  • browser_route
    • ชื่อ: จำลองคำขอเครือข่าย
    • คำอธิบาย: ตั้งค่าเส้นทางเพื่อจำลองคำขอเครือข่ายที่ตรงกับรูปแบบ URL
    • พารามิเตอร์:
      • pattern (string): รูปแบบ URL ที่จะจับคู่ (เช่น "/api/users", "/*.{png,jpg}")
      • status (number, ไม่บังคับ): รหัสสถานะ HTTP ที่จะส่งคืน (ค่าเริ่มต้น: 200)
      • body (string, ไม่บังคับ): เนื้อหาการตอบสนอง (ข้อความหรือสตริง JSON)
      • contentType (string, ไม่บังคับ): ส่วนหัว Content-Type (เช่น "application/json", "text/html")
      • headers (array, ไม่บังคับ): ส่วนหัวที่จะเพิ่มในรูปแบบ "ชื่อ: ค่า"
      • removeHeaders (string, ไม่บังคับ): รายการชื่อส่วนหัวที่คั่นด้วยเครื่องหมายจุลภาคเพื่อลบออกจากคำขอ
    • อ่านอย่างเดียว: false
  • browser_route_list
    • ชื่อ: แสดงรายการเส้นทางเครือข่าย
    • คำอธิบาย: แสดงรายการเส้นทางเครือข่ายที่ใช้งานอยู่ทั้งหมด
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_unroute
    • ชื่อ: ลบเส้นทางเครือข่าย
    • คำอธิบาย: ลบเส้นทางเครือข่ายที่ตรงกับรูปแบบ (หรือลบทั้งหมดหากไม่ระบุรูปแบบ)
    • พารามิเตอร์:
      • pattern (string, ไม่บังคับ): รูปแบบ URL ที่จะลบเส้นทาง (ละเว้นเพื่อลบเส้นทางทั้งหมด)
    • อ่านอย่างเดียว: false
พื้นที่จัดเก็บ (เลือกใช้ผ่าน --caps=storage)
  • browser_cookie_clear
    • ชื่อ: ล้างคุกกี้
    • คำอธิบาย: ล้างคุกกี้ทั้งหมด
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: false
  • browser_cookie_delete
    • ชื่อ: ลบคุกกี้
    • คำอธิบาย: ลบคุกกี้เฉพาะ
    • พารามิเตอร์:
      • name (string): ชื่อคุกกี้ที่จะลบ
    • อ่านอย่างเดียว: false
  • browser_cookie_get
    • ชื่อ: รับคุกกี้
    • คำอธิบาย: รับคุกกี้เฉพาะตามชื่อ
    • พารามิเตอร์:
      • name (string): ชื่อคุกกี้ที่จะรับ
    • อ่านอย่างเดียว: true
  • browser_cookie_list
    • ชื่อ: แสดงรายการคุกกี้
    • คำอธิบาย: แสดงรายการคุกกี้ทั้งหมด (สามารถกรองตามโดเมน/เส้นทางได้)
    • พารามิเตอร์:
      • domain (string, ไม่บังคับ): กรองคุกกี้ตามโดเมน
      • path (string, ไม่บังคับ): กรองคุกกี้ตามเส้นทาง
    • อ่านอย่างเดียว: true
  • browser_cookie_set
    • ชื่อ: ตั้งค่าคุกกี้
    • คำอธิบาย: ตั้งค่าคุกกี้พร้อมแฟล็กเพิ่มเติม (โดเมน, เส้นทาง, วันหมดอายุ, httpOnly, secure, sameSite)
    • พารามิเตอร์:
      • name (string): ชื่อคุกกี้
      • value (string): ค่าคุกกี้
      • domain (string, ไม่บังคับ): โดเมนของคุกกี้
      • path (string, ไม่บังคับ): เส้นทางของคุกกี้
      • expires (number, ไม่บังคับ): วันหมดอายุของคุกกี้เป็น timestamp Unix
      • httpOnly (boolean, ไม่บังคับ): ว่าคุกกี้เป็น HTTP only หรือไม่
      • secure (boolean, ไม่บังคับ): ว่าคุกกี้เป็น secure หรือไม่
      • sameSite (string, ไม่บังคับ): แอตทริบิวต์ SameSite ของคุกกี้
    • อ่านอย่างเดียว: false
  • browser_localstorage_clear
    • ชื่อ: ล้าง localStorage
    • คำอธิบาย: ล้าง localStorage ทั้งหมด
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: false
  • browser_localstorage_delete
    • ชื่อ: ลบรายการ localStorage
    • คำอธิบาย: ลบรายการ localStorage
    • พารามิเตอร์:
      • key (string): คีย์ที่จะลบ
    • อ่านอย่างเดียว: false
  • browser_localstorage_get
    • ชื่อ: รับรายการ localStorage
    • คำอธิบาย: รับรายการ localStorage ตามคีย์
    • พารามิเตอร์:
      • key (string): คีย์ที่จะรับ
    • อ่านอย่างเดียว: true
  • browser_localstorage_list
    • ชื่อ: แสดงรายการ localStorage
    • คำอธิบาย: แสดงรายการคู่คีย์-ค่าของ localStorage ทั้งหมด
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_localstorage_set
    • ชื่อ: ตั้งค่ารายการ localStorage
    • คำอธิบาย: ตั้งค่ารายการ localStorage
    • พารามิเตอร์:
      • key (string): คีย์ที่จะตั้งค่า
      • value (string): ค่าที่จะตั้งค่า
    • อ่านอย่างเดียว: false
  • browser_sessionstorage_clear
    • ชื่อ: ล้าง sessionStorage
    • คำอธิบาย: ล้าง sessionStorage ทั้งหมด
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: false
  • browser_sessionstorage_delete
    • ชื่อ: ลบรายการ sessionStorage
    • คำอธิบาย: ลบรายการ sessionStorage
    • พารามิเตอร์:
      • key (string): คีย์ที่จะลบ
    • อ่านอย่างเดียว: false
  • browser_sessionstorage_get
    • ชื่อ: รับรายการ sessionStorage
    • คำอธิบาย: รับรายการ sessionStorage ตามคีย์
    • พารามิเตอร์:
      • key (string): คีย์ที่จะรับ
    • อ่านอย่างเดียว: true
  • browser_sessionstorage_list
    • ชื่อ: แสดงรายการ sessionStorage
    • คำอธิบาย: แสดงรายการคู่คีย์-ค่าของ sessionStorage ทั้งหมด
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_sessionstorage_set
    • ชื่อ: ตั้งค่ารายการ sessionStorage
    • คำอธิบาย: ตั้งค่ารายการ sessionStorage
    • พารามิเตอร์:
      • key (string): คีย์ที่จะตั้งค่า
      • value (string): ค่าที่จะตั้งค่า
    • อ่านอย่างเดียว: false
  • browser_set_storage_state
    • ชื่อ: คืนค่าสถานะพื้นที่จัดเก็บ
    • คำอธิบาย: คืนค่าสถานะพื้นที่จัดเก็บ (คุกกี้, localStorage) จากไฟล์ การดำเนินการนี้จะล้างคุกกี้และ localStorage ที่มีอยู่ก่อนการคืนค่า
    • พารามิเตอร์:
      • filename (string): เส้นทางไปยังไฟล์สถานะพื้นที่จัดเก็บที่จะคืนค่า
    • อ่านอย่างเดียว: false
  • browser_storage_state
    • ชื่อ: บันทึกสถานะพื้นที่จัดเก็บ
    • คำอธิบาย: บันทึกสถานะพื้นที่จัดเก็บ (คุกกี้, localStorage) ลงในไฟล์เพื่อใช้ซ้ำในภายหลัง
    • พารามิเตอร์:
      • filename (string, ไม่บังคับ): ชื่อไฟล์ที่จะบันทึกสถานะพื้นที่จัดเก็บ ค่าเริ่มต้นคือ storage-state-{timestamp}.json หากไม่ระบุ
    • อ่านอย่างเดียว: true
เครื่องมือนักพัฒนา (เลือกใช้ผ่าน --caps=devtools)
  • browser_annotate
    • ชื่อ: เขียนคำอธิบายประกอบบนหน้าปัจจุบัน
    • คำอธิบาย: เปิด Playwright Dashboard ในโหมดคำอธิบายประกอบสำหรับหน้าปัจจุบันและรอให้ผู้ใช้วาดคำอธิบายประกอบ ส่งคืนภาพหน้าจอที่มีคำอธิบายประกอบ, ARIA snapshot, และรายการคำอธิบายประกอบ
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_hide_highlight
    • ชื่อ: ซ่อนการไฮไลต์องค์ประกอบ
    • คำอธิบาย: ลบการซ้อนทับไฮไลต์ที่เพิ่มไว้ก่อนหน้านี้สำหรับองค์ประกอบ
    • พารามิเตอร์:
      • element (string, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ซึ่งใช้เมื่อเพิ่มไฮไลต์; ต้องตรงกับค่าที่ส่งไปยัง browser_highlight
      • target (string, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจาก snapshot ของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
    • อ่านอย่างเดียว: true
  • browser_highlight
    • ชื่อ: ไฮไลต์องค์ประกอบ
    • คำอธิบาย: แสดงการซ้อนทับไฮไลต์ถาวรรอบองค์ประกอบบนหน้า
    • พารามิเตอร์:
      • element (string, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ซึ่งใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (string): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจาก snapshot ของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
      • style (string, ไม่บังคับ): CSS แบบอินไลน์เพิ่มเติมที่ใช้กับการซ้อนทับไฮไลต์ เช่น "outline: 2px dashed red"
    • อ่านอย่างเดียว: true
  • browser_resume
    • ชื่อ: ดำเนินการต่อการทำงานสคริปต์ที่หยุดชั่วคราว
    • คำอธิบาย: ดำเนินการต่อการทำงานสคริปต์หลังจากที่หยุดชั่วคราว เมื่อเรียกด้วย step เป็น true การทำงานจะหยุดชั่วคราวอีกครั้งก่อนการดำเนินการถัดไป
    • พารามิเตอร์:
      • step (boolean, ไม่บังคับ): เมื่อเป็น true การทำงานจะหยุดชั่วคราวอีกครั้งก่อนการดำเนินการถัดไป เพื่อให้สามารถดีบักทีละขั้นตอนได้
      • location (string, ไม่บังคับ): หยุดการทำงานชั่วคราวที่ : เฉพาะ เช่น "example.spec.ts:42"
    • อ่านอย่างเดียว: false
  • browser_start_recording
    • ชื่อ: เริ่มบันทึกการกระทำของผู้ใช้
    • คำอธิบาย: เริ่มบันทึกการกระทำที่ผู้ใช้ทำในเบราว์เซอร์เป็นโค้ด Playwright ใช้เมื่อผู้ใช้ต้องการสาธิตขั้นตอนด้วยตนเอง เรียก browser_stop_recording เมื่อผู้ใช้บอกว่าเสร็จสิ้นเพื่อรับการกระทำที่บันทึกไว้
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_start_tracing
    • ชื่อ: เริ่มการติดตาม
    • คำอธิบาย: เริ่มการบันทึกการติดตาม
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_start_video
    • ชื่อ: เริ่มวิดีโอ
    • คำอธิบาย: เริ่มการบันทึกวิดีโอ
    • พารามิเตอร์:
      • filename (string, ไม่บังคับ): ชื่อไฟล์ที่จะบันทึกวิดีโอ
      • size (object, ไม่บังคับ): ขนาดวิดีโอ
    • อ่านอย่างเดียว: true
  • browser_stop_recording
    • ชื่อ: หยุดบันทึกการกระทำของผู้ใช้
    • คำอธิบาย: หยุดการบันทึกที่เริ่มด้วย browser_start_recording และส่งคืนการกระทำที่บันทึกไว้เป็นโค้ด Playwright
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_stop_tracing
    • ชื่อ: หยุดการติดตาม
    • คำอธิบาย: หยุดการบันทึกการติดตาม
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_stop_video
    • ชื่อ: หยุดวิดีโอ
    • คำอธิบาย: หยุดการบันทึกวิดีโอ
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_video_chapter
    • ชื่อ: บทวิดีโอ
    • คำอธิบาย: เพิ่มเครื่องหมายบทลงในการบันทึกวิดีโอ แสดงการ์ดบทแบบเต็มหน้าจอพร้อมพื้นหลังเบลอ
    • พารามิเตอร์:
      • title (string): ชื่อบท
      • description (string, ไม่บังคับ): คำอธิบายบท
      • duration (number, ไม่บังคับ): ระยะเวลาเป็นมิลลิวินาทีที่จะแสดงการ์ดบท
    • อ่านอย่างเดียว: true
  • browser_video_hide_actions
    • ชื่อ: ซ่อนการซ้อนทับการกระทำ
    • คำอธิบาย: หยุดการใส่คำอธิบายประกอบการกระทำที่ทำบนหน้า
    • พารามิเตอร์: ไม่มี
    • อ่านอย่างเดียว: true
  • browser_video_show_actions
    • ชื่อ: แสดงป้ายกำกับการทำงาน
    • คำอธิบาย: ใส่คำอธิบายประกอบการทำงานที่เกิดขึ้นบนหน้าเว็บด้วยป้ายที่ระบุชื่อการทำงานและไฮไลต์องค์ประกอบเป้าหมาย มีประโยชน์เมื่อบันทึกวิดีโอหรือจับภาพหน้าจอ
    • พารามิเตอร์:
      • duration (number, ไม่บังคับ): ระยะเวลาที่ป้ายกำกับการทำงานแต่ละอันแสดงบนหน้าจอ หน่วยเป็นมิลลิวินาที ค่าเริ่มต้นคือ 500
      • position (string, ไม่บังคับ): ตำแหน่งที่จะวางชื่อการทำงานสัมพันธ์กับหน้าเว็บ ค่าเริ่มต้นคือมุมขวาบน
      • cursor (string, ไม่บังคับ): การตกแต่งเคอร์เซอร์สำหรับการทำงานด้วยตัวชี้ "pointer" (ค่าเริ่มต้น) จะแสดงภาพเคลื่อนไหวของตัวชี้เมาส์จากจุดการทำงานก่อนหน้าไปยังจุดถัดไป "none" จะปิดการตกแต่งเคอร์เซอร์
    • อ่านอย่างเดียว: true
ตามพิกัด (เลือกใช้ผ่าน --caps=vision)
  • browser_mouse_click_xy
    • ชื่อ: คลิก
    • คำอธิบาย: คลิกปุ่มเมาส์ที่ตำแหน่งที่กำหนด
    • พารามิเตอร์:
      • x (number): พิกัด X
      • y (number): พิกัด Y
      • button (string, ไม่บังคับ): ปุ่มที่จะคลิก ค่าเริ่มต้นคือปุ่มซ้าย
      • clickCount (number, ไม่บังคับ): จำนวนครั้งที่คลิก ค่าเริ่มต้นคือ 1
      • delay (number, ไม่บังคับ): เวลาที่รอระหว่างกดเมาส์ลงและปล่อยเมาส์ หน่วยเป็นมิลลิวินาที ค่าเริ่มต้นคือ 0
    • อ่านอย่างเดียว: false
  • browser_mouse_down
    • ชื่อ: กดเมาส์ค้าง
    • คำอธิบาย: กดเมาส์ค้าง
    • พารามิเตอร์:
      • button (string, ไม่บังคับ): ปุ่มที่จะกด ค่าเริ่มต้นคือปุ่มซ้าย
    • อ่านอย่างเดียว: false
  • browser_mouse_drag_xy
    • ชื่อ: ลากเมาส์
    • คำอธิบาย: ลากปุ่มซ้ายของเมาส์ไปยังตำแหน่งที่กำหนด
    • พารามิเตอร์:
      • startX (number): พิกัด X เริ่มต้น
      • startY (number): พิกัด Y เริ่มต้น
      • endX (number): พิกัด X สิ้นสุด
      • endY (number): พิกัด Y สิ้นสุด
    • อ่านอย่างเดียว: false
  • browser_mouse_move_xy
    • ชื่อ: เลื่อนเมาส์
    • คำอธิบาย: เลื่อนเมาส์ไปยังตำแหน่งที่กำหนด
    • พารามิเตอร์:
      • x (number): พิกัด X
      • y (number): พิกัด Y
    • อ่านอย่างเดียว: false
  • browser_mouse_up
    • ชื่อ: ปล่อยเมาส์
    • คำอธิบาย: ปล่อยเมาส์
    • พารามิเตอร์:
      • button (string, ไม่บังคับ): ปุ่มที่จะปล่อย ค่าเริ่มต้นคือปุ่มซ้าย
    • อ่านอย่างเดียว: false
  • browser_mouse_wheel
    • ชื่อ: เลื่อนล้อเมาส์
    • คำอธิบาย: เลื่อนล้อเมาส์
    • พารามิเตอร์:
      • deltaX (number): ค่าเดลต้า X
      • deltaY (number): ค่าเดลต้า Y
    • อ่านอย่างเดียว: false
การสร้าง PDF (เลือกใช้ผ่าน --caps=pdf)
  • browser_pdf_save
    • ชื่อ: บันทึกเป็น PDF
    • คำอธิบาย: บันทึกหน้าเว็บเป็น PDF
    • พารามิเตอร์:
      • filename (string, ไม่บังคับ): ชื่อไฟล์ที่จะบันทึก PDF ค่าเริ่มต้นคือ page-{timestamp}.pdf หากไม่ระบุ ควรใช้ชื่อไฟล์แบบสัมพันธ์เพื่อให้อยู่ในไดเรกทอรีเอาต์พุต
    • อ่านอย่างเดียว: true
การตรวจสอบการทดสอบ (เลือกใช้ผ่าน --caps=testing)
  • browser_generate_locator
    • ชื่อ: สร้างตัวระบุตำแหน่งสำหรับองค์ประกอบ
    • คำอธิบาย: สร้างตัวระบุตำแหน่งสำหรับองค์ประกอบที่กำหนดเพื่อใช้ในการทดสอบ
    • พารามิเตอร์:
      • element (string, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบ
      • target (string): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตหน้าเว็บ หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
    • อ่านอย่างเดียว: true
  • browser_verify_element_visible
    • ชื่อ: ตรวจสอบว่าองค์ประกอบมองเห็นได้
    • คำอธิบาย: ตรวจสอบว่าองค์ประกอบมองเห็นได้บนหน้าเว็บ
    • พารามิเตอร์:
      • role (string): บทบาท (ROLE) ขององค์ประกอบ สามารถพบได้ในสแนปช็อตเช่นนี้: - {ROLE} "Accessible Name":
      • accessibleName (string): ชื่อที่เข้าถึงได้ (ACCESSIBLE_NAME) ขององค์ประกอบ สามารถพบได้ในสแนปช็อตเช่นนี้: - role "{ACCESSIBLE_NAME}"
    • อ่านอย่างเดียว: false
  • browser_verify_list_visible
    • ชื่อ: ตรวจสอบว่ารายการมองเห็นได้
    • คำอธิบาย: ตรวจสอบว่ารายการมองเห็นได้บนหน้าเว็บ
    • พารามิเตอร์:
      • element (string): คำอธิบายรายการที่มนุษย์อ่านได้
      • target (string): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนที่ชี้ไปยังรายการ
      • items (array): รายการที่จะตรวจสอบ
    • อ่านอย่างเดียว: false
  • browser_verify_text_visible
    • ชื่อ: ตรวจสอบว่าข้อความมองเห็นได้
    • คำอธิบาย: ตรวจสอบว่าข้อความมองเห็นได้บนหน้าเว็บ ควรใช้ browser_verify_element_visible หากเป็นไปได้
    • พารามิเตอร์:
      • text (string): ข้อความ (TEXT) ที่จะตรวจสอบ สามารถพบได้ในสแนปช็อตเช่นนี้: - role "Accessible Name": {TEXT} หรือเช่นนี้: - text: {TEXT}
    • อ่านอย่างเดียว: false
  • browser_verify_value
    • ชื่อ: ตรวจสอบค่า
    • คำอธิบาย: ตรวจสอบค่าขององค์ประกอบ
    • พารามิเตอร์:
      • type (string): ประเภทขององค์ประกอบ
      • element (string): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้
      • target (string): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตหน้าเว็บ
      • value (string): ค่าที่จะตรวจสอบ สำหรับช่องทำเครื่องหมาย ให้ใช้ "true" หรือ "false"
    • อ่านอย่างเดียว: false