Playwright MCP

ทางการ

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

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

  • นำทางและโต้ตอบกับหน้าเว็บ — ให้ผู้ช่วยเปิด URL, คลิกองค์ประกอบ, กรอกแบบฟอร์ม หรือดึงข้อมูลภาพรวมการเข้าถึงที่มีโครงสร้างโดยใช้ระบบอัตโนมัติของเบราว์เซอร์ Playwright
  • กำหนดค่าพฤติกรรมของเบราว์เซอร์ — ตั้งค่าประเภทเบราว์เซอร์, ขนาดวิวพอร์ต, การจำลองอุปกรณ์ หรือตัวแทนผู้ใช้ผ่านอาร์กิวเมนต์ --browser, --device, --viewport-size และ --user-agent
  • จัดการเซสชันและการยืนยันตัวตน — ใช้โปรไฟล์ถาวร (--user-data-dir), เซสชันแยก (--isolated) หรือไฟล์สถานะพื้นที่จัดเก็บ (--storage-state) เพื่อควบคุมสถานะการเข้าสู่ระบบในแต่ละรอบการทำงาน
  • เชื่อมต่อกับเบราว์เซอร์ที่มีอยู่ — แนบไปกับอินสแตนซ์ Chrome หรือ Edge ที่กำลังทำงานด้วยแฟล็ก --extension เพื่อใช้เซสชันที่เข้าสู่ระบบแล้วซ้ำโดยไม่ต้องยืนยันตัวตนอีกครั้ง
  • ควบคุมเอาต์พุตและภาพรวม — บันทึกข้อความคอนโซล, บันทึกเครือข่าย และภาพรวมการเข้าถึงลงในไฟล์หรือ stdout โดยใช้ --output-dir, --output-mode และ --snapshot-mode

เอกสาร

Playwright MCP

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

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

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

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

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

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

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

ข้อกำหนด

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

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

ขั้นแรก ติดตั้งเซิร์ฟเวอร์ Playwright MCP กับไคลเอนต์ของคุณ

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

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

Install in VS Code Install in VS Code Insiders

Amp

เพิ่มผ่านหน้าจอการตั้งค่าส่วนขยาย Amp VS Code หรือโดยการอัปเดตไฟล์ 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:

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

ทำตามคู่มือการติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน

Cline

ทำตามคำแนะนำในส่วน การกำหนดค่าเซิร์ฟเวอร์ MCP

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

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

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

ใช้ Codex CLI เพื่อเพิ่มเซิร์ฟเวอร์ Playwright MCP:

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

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

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

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

Copilot

ใช้ Copilot CLI เพื่อเพิ่มเซิร์ฟเวอร์ Playwright MCP แบบโต้ตอบ:

/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:

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

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

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

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:

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

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

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

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

Junie

เพื่อเพิ่มเซิร์ฟเวอร์ Playwright MCP ใน Junie CLI:

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

หรือเพิ่มไปที่ .junie/mcp/mcp.json:

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

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

Kiro

Add to Kiro

ทำตามเอกสารประกอบเซิร์ฟเวอร์ MCP ตัวอย่างใน .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 ตัวอย่างใน ~/.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 → เชื่อมต่อเครื่องมือเพิ่มเติม → + เพิ่ม MCP ใหม่ → วางการกำหนดค่ามาตรฐานด้านบน

คลิก Save

VS Code

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

Install in VS Code Install in VS Code Insiders

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

ทำตามคู่มือการติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน คุณยังสามารถติดตั้งเซิร์ฟเวอร์ Playwright MCP โดยใช้ VS Code CLI:

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

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

Warp

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

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

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

ทำตามเอกสารประกอบ Windsurf MCP ใช้การกำหนดค่ามาตรฐานด้านบน

การกำหนดค่า

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

ตัวเลือกคำอธิบาย
--allowed-hosts <hosts...>รายการโฮสต์ที่เซิร์ฟเวอร์นี้อนุญาตให้ให้บริการ โดยคั่นด้วยเครื่องหมายจุลภาค ค่าเริ่มต้นคือโฮสต์ที่เซิร์ฟเวอร์ผูกไว้ ใส่ '*' เพื่อปิดใช้งานการตรวจสอบโฮสต์
env PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins รายการต้นทางที่เชื่อถือได้ซึ่งอนุญาตให้เบราว์เซอร์ร้องขอ โดยคั่นด้วยเครื่องหมายอัฒภาค ค่าเริ่มต้นคืออนุญาตทั้งหมด สำคัญ: ไม่ได้ ทำหน้าที่เป็นขอบเขตความปลอดภัย และ ไม่มีผล ต่อการเปลี่ยนเส้นทาง
env PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accessอนุญาตให้เข้าถึงไฟล์นอกเหนือจากรูทพื้นที่ทำงาน และยังอนุญาตให้เข้าถึง URL แบบ file:// ได้โดยไม่จำกัด ตามค่าเริ่มต้น การเข้าถึงระบบไฟล์จะถูกจำกัดไว้เฉพาะไดเรกทอรีรูทของพื้นที่ทำงาน (หรือ cwd หากไม่มีการกำหนดค่ารูท) เท่านั้น และการนำทางไปยัง URL แบบ file:// จะถูกบล็อก
env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins รายการต้นทางที่บล็อกไม่ให้เบราว์เซอร์ร้องขอ โดยคั่นด้วยเครื่องหมายอัฒภาค รายการบล็อกจะถูกประเมินก่อนรายการอนุญาต หากใช้โดยไม่มีรายการอนุญาต คำขอที่ไม่ตรงกับรายการบล็อกจะยังคงได้รับอนุญาต สำคัญ: ไม่ได้ ทำหน้าที่เป็นขอบเขตความปลอดภัย และ ไม่มีผล ต่อการเปลี่ยนเส้นทาง
env PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersบล็อก Service Worker
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", "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 ค่าเริ่มต้นคือ headed
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ปิดใช้งานแซนด์บ็อกซ์สำหรับประเภทกระบวนการทั้งหมดที่ปกติถูกแซนด์บ็อกซ์
env PLAYWRIGHT_MCP_NO_SANDBOX
--output-dir พาธไปยังไดเรกทอรีสำหรับไฟล์เอาต์พุต
env PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size เกณฑ์สำหรับการขับไล่ไฟล์เอาต์พุตเก่า ในหน่วยไบต์
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--output-mode ว่าจะบันทึกสแนปช็อต ข้อความคอนโซล บันทึกเครือข่ายลงในไฟล์หรือเอาต์พุตมาตรฐาน สามารถเป็น "file" หรือ "stdout" ค่าเริ่มต้นคือ "stdout".
env PLAYWRIGHT_MCP_OUTPUT_MODE
--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เปิดใช้งานแซนด์บ็อกซ์สำหรับประเภทกระบวนการทั้งหมดที่ปกติไม่ถูกแซนด์บ็อกซ์
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-mode เมื่อถ่ายสแนปช็อตสำหรับการตอบกลับ ระบุโหมดที่จะใช้ สามารถเป็น "full" หรือ "none" ค่าเริ่มต้นคือ "full".
env PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state พาธไปยังไฟล์สถานะที่เก็บข้อมูลสำหรับเซสชันแบบแยกส่วน
env PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute ระบุแอตทริบิวต์ที่จะใช้สำหรับ test id ค่าเริ่มต้นคือ "data-testid"
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action ระบุระยะหมดเวลาของการกระทำในหน่วยมิลลิวินาที ค่าเริ่มต้นคือ 5000ms
env PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation ระบุระยะหมดเวลาการนำทางในหน่วยมิลลิวินาที ค่าเริ่มต้นคือ 60000ms
env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--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}"
      ]
    }
  }
}

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

Playwright MCP Chrome Extension ช่วยให้คุณเชื่อมต่อกับแท็บเบราว์เซอร์ที่มีอยู่ และใช้ประโยชน์จากเซสชันที่เข้าสู่ระบบและสถานะเบราว์เซอร์ของคุณ ดู 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;
  };

  /**
   * 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';
  };

  /**
   * 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' | 'none';
}

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

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