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"
]
}
}
}
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
คลิกปุ่มเพื่อติดตั้ง:
หรือติดตั้งด้วยตนเอง:
ไปที่ 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
คลิกปุ่มเพื่อติดตั้ง:
หรือติดตั้งด้วยตนเอง:
ไปที่ 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:
- พิมพ์
/mcp - กด
Ctrl+Aเพื่อเพิ่มเซิร์ฟเวอร์ MCP ใหม่ - เลือก Playwright จากรายการ
หรือเพิ่มไปที่ .junie/mcp/mcp.json:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบการกำหนดค่า Junie MCP
Kiro
ทำตามเอกสารประกอบเซิร์ฟเวอร์ MCP ตัวอย่างใน .kiro/settings/mcp.json:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
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
คลิกปุ่มเพื่อติดตั้ง:
หรือติดตั้งด้วยตนเอง:
ทำตามคู่มือการติดตั้ง 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, ไม่บังคับ): ส่งคืนข้อความคอนโซลทั้งหมดตั้งแต่เริ่มต้นเซสชัน ไม่ใช่เฉพาะตั้งแต่การนำทางครั้งล่าสุด ค่าเริ่มต้นคือ falsefilename(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_requestspart(string, ไม่บังคับ): ส่งคืนเฉพาะส่วนนี้ของคำขอ ละไว้เพื่อส่งคืนรายละเอียดทั้งหมดfilename(string, ไม่บังคับ): ชื่อไฟล์ที่จะบันทึกผลลัพธ์ หากไม่ระบุ ผลลัพธ์จะถูกส่งคืนเป็นข้อความ
- อ่านอย่างเดียว: true
- browser_network_requests
- ชื่อ: แสดงรายการคำขอเครือข่าย
- คำอธิบาย: ส่งคืนรายการหมายเลขของคำขอเครือข่ายตั้งแต่โหลดหน้า ใช้ browser_network_request กับหมายเลขเพื่อรับรายละเอียดทั้งหมด
- พารามิเตอร์:
static(boolean): ว่าจะรวมทรัพยากรสถิตที่สำเร็จ เช่น รูปภาพ ฟอนต์ สคริปต์ ฯลฯ หรือไม่ ค่าเริ่มต้นคือ falsefilter(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): รูปแบบภาพสำหรับภาพหน้าจอ ค่าเริ่มต้นคือ pngfilename(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 timestamphttpOnly(บูลีน, ไม่บังคับ): ระบุว่าคุกกี้เป็น 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_highlighttarget(สตริง, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปชอตหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
- อ่านอย่างเดียว: 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(ตัวเลข, ไม่บังคับ): ระยะเวลาที่คำอธิบายประกอบแต่ละการกระทำจะอยู่บนหน้าจอ เป็นมิลลิวินาที ค่าเริ่มต้นคือ 500position(สตริง, ไม่บังคับ): ตำแหน่งที่จะวางชื่อการกระทำเทียบกับหน้า ค่าเริ่มต้นคือ top-rightcursor(สตริง, ไม่บังคับ): การตกแต่งเคอร์เซอร์สำหรับการกระทำของตัวชี้ "pointer" (ค่าเริ่มต้น) ทำให้ตัวชี้เมาส์เคลื่อนไหวจากจุดการกระทำก่อนหน้าไปยังจุดถัดไป "none" ปิดการตกแต่งเคอร์เซอร์
- อ่านอย่างเดียว: true
ตามพิกัด (เลือกใช้ผ่าน --caps=vision)
- browser_mouse_click_xy
- ชื่อ: คลิก
- คำอธิบาย: คลิกปุ่มเมาส์ที่ตำแหน่งที่กำหนด
- พารามิเตอร์:
x(ตัวเลข): พิกัด Xy(ตัวเลข): พิกัด Ybutton(สตริง, ไม่บังคับ): ปุ่มที่จะคลิก, ค่าเริ่มต้นคือซ้ายclickCount(ตัวเลข, ไม่บังคับ): จำนวนครั้งที่คลิก, ค่าเริ่มต้นคือ 1delay(ตัวเลข, ไม่บังคับ): เวลาที่รอระหว่างกดเมาส์ลงและปล่อยเมาส์ขึ้นในหน่วยมิลลิวินาที, ค่าเริ่มต้นคือ 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(ตัวเลข): พิกัด Xy(ตัวเลข): พิกัด Y
- อ่านอย่างเดียว: false
- browser_mouse_up
- ชื่อ: ปล่อยเมาส์ขึ้น
- คำอธิบาย: ปล่อยเมาส์ขึ้น
- พารามิเตอร์:
button(สตริง, ไม่บังคับ): ปุ่มที่จะปล่อย, ค่าเริ่มต้นคือซ้าย
- อ่านอย่างเดียว: false
- browser_mouse_wheel
- ชื่อ: เลื่อนล้อเมาส์
- คำอธิบาย: เลื่อนล้อเมาส์
- พารามิเตอร์:
deltaX(ตัวเลข): ค่าเดลต้า XdeltaY(ตัวเลข): ค่าเดลต้า 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