Playwright MCP
ทางการเซิร์ฟเวอร์ Playwright MCP อย่างเป็นทางการสำหรับการทำงานอัตโนมัติของเบราว์เซอร์ การตรวจสอบหน้าเว็บ การจับภาพหน้าจอ และการโต้ตอบกับเว็บจาก Claude, Cursor และเอเจนต์ AI อื่นๆ
คุณทำอะไรได้บ้างด้วย Playwright MCP?
- การเรียกดู Accessibility-tree — ให้ AI ของคุณนำทางหน้าเว็บและอ่านโครงสร้าง accessibility แบบสแนปช็อต โดยไม่ต้องใช้โมเดล vision
- เซสชันเบราว์เซอร์แบบถาวร — เก็บสถานะการเข้าสู่ระบบระหว่างการสนทนาผ่าน
--user-data-dirหรือ--storage-stateสำหรับเวิร์กโฟลว์ที่ต้องมีการยืนยันตัวตน - การทำงานอัตโนมัติกับหลายเบราว์เซอร์ — ควบคุม Chromium, Firefox, WebKit หรือ Edge ด้วยแฟล็ก
--browserสำหรับการทดสอบข้ามเอ็นจิน - การจำลองอุปกรณ์ — จำลองอุปกรณ์มือถือเช่น "iPhone 15" ผ่าน
--deviceหรือโหมด--mobileทั่วไปสำหรับการทดสอบการตอบสนอง - การสร้างโค้ด — สร้างสคริปต์ทดสอบ Playwright ใน TypeScript, Python, Java หรือ C# โดยใช้ตัวเลือก
--codegen - บริบทการทดสอบแบบแยก — รันเซสชันด้วยแฟล็ก
--isolatedเพื่อทิ้งสถานะทั้งหมดหลังจากการปิดเบราว์เซอร์แต่ละครั้ง
เอกสาร
Playwright MCP
เซิร์ฟเวอร์ Model Context Protocol (MCP) ที่ให้ความสามารถในการทำงานอัตโนมัติกับเบราว์เซอร์โดยใช้ Playwright เซิร์ฟเวอร์นี้ช่วยให้ LLM สามารถโต้ตอบกับหน้าเว็บผ่านโครงสร้าง accessibility snapshots โดยไม่จำเป็นต้องใช้ภาพหน้าจอหรือโมเดลที่ปรับแต่งด้วยภาพ
Playwright MCP เทียบกับ Playwright CLI
แพ็คเกจนี้ให้อินเทอร์เฟซ MCP เข้ากับ Playwright หากคุณใช้ coding agent คุณอาจได้รับประโยชน์จากการใช้ CLI+SKILLS แทน
-
CLI: Coding agents สมัยใหม่นิยมใช้เวิร์กโฟลว์แบบ CLI ที่แสดงเป็น SKILLs มากกว่า MCP เนื่องจากการเรียกใช้ CLI ประหยัด token มากกว่า: หลีกเลี่ยงการโหลด tool schemas ขนาดใหญ่และ accessibility trees ที่ละเอียดเข้าไปในบริบทของโมเดล ทำให้ agent สามารถทำงานผ่านคำสั่งที่กระชับและออกแบบมาโดยเฉพาะ ทำให้ CLI + SKILLs เหมาะกับ coding agents ที่ต้องจัดการกับงานปริมาณมากซึ่งต้องสมดุลระหว่างการทำงานอัตโนมัติกับเบราว์เซอร์และโค้ดเบสขนาดใหญ่ การทดสอบ และการใช้เหตุผลภายในกรอบบริบทที่จำกัด
เรียนรู้เพิ่มเติมเกี่ยวกับ Playwright CLI with SKILLS -
MCP: MCP ยังคงมีความเกี่ยวข้องสำหรับลูป agentic เฉพาะทางที่ได้รับประโยชน์จากสถานะที่คงอยู่ การตรวจสอบเชิงลึก และการใช้เหตุผลซ้ำๆ กับโครงสร้างหน้าเว็บ เช่น การทำงานอัตโนมัติเชิงสำรวจ การทดสอบที่ซ่อมแซมตัวเอง หรือเวิร์กโฟลว์อัตโนมัติระยะยาวที่การรักษาบริบทของเบราว์เซอร์อย่างต่อเนื่องสำคัญกว่าความกังวลเรื่องต้นทุน token
คุณสมบัติหลัก
- รวดเร็วและน้ำหนักเบา ใช้ accessibility tree ของ Playwright ไม่ใช้อินพุตแบบพิกเซล
- เป็นมิตรกับ LLM ไม่ต้องใช้โมเดลวิทัศน์ ทำงานบนข้อมูลที่มีโครงสร้างเท่านั้น
- การใช้งานเครื่องมือที่แน่นอน หลีกเลี่ยงความคลุมเครือที่พบได้ทั่วไปในแนวทางที่ใช้ภาพหน้าจอ
ข้อกำหนด
- Node.js 18 หรือใหม่กว่า
- VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie หรือ MCP client อื่นๆ
เริ่มต้นใช้งาน
ขั้นแรก ติดตั้ง Playwright MCP server กับ client ของคุณ
การกำหนดค่ามาตรฐาน ใช้งานได้กับเครื่องมือส่วนใหญ่:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Amp
เพิ่มผ่านหน้าจอการตั้งค่า Amp VS Code extension หรือโดยการอัปเดตไฟล์ settings.json ของคุณ:
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
การตั้งค่า Amp CLI:
เพิ่มผ่านคำสั่ง amp mcp add ด้านล่าง
amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity
เพิ่มผ่านการตั้งค่า Antigravity หรือโดยการอัปเดตไฟล์การกำหนดค่าของคุณ:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Claude Code
ใช้ Claude Code CLI เพื่อเพิ่ม Playwright MCP server:
claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop
ปฏิบัติตาม คำแนะนำ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน
Cline
ปฏิบัติตามคำแนะนำในส่วน Configuring MCP Servers
ตัวอย่าง: การตั้งค่าในเครื่อง
เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ cline_mcp_settings.json ของคุณ:
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}
Codex
ใช้ Codex CLI เพื่อเพิ่ม Playwright MCP server:
codex mcp add playwright npx "@playwright/mcp@latest"
หรืออีกทางเลือกหนึ่ง สร้างหรือแก้ไขไฟล์การกำหนดค่า ~/.codex/config.toml และเพิ่ม:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบ MCP ของ Codex
Copilot
ใช้ Copilot CLI เพื่อเพิ่ม Playwright MCP server แบบโต้ตอบ:
/mcp add
หรืออีกทางเลือกหนึ่ง สร้างหรือแก้ไขไฟล์การกำหนดค่า ~/.copilot/mcp-config.json และเพิ่ม:
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}
สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบ Copilot CLI
Cursor
คลิกปุ่มเพื่อติดตั้ง:
หรือติดตั้งด้วยตนเอง:
ไปที่ Cursor Settings -> MCP -> Add new MCP Server ตั้งชื่อตามที่คุณต้องการ ใช้ประเภท command พร้อมคำสั่ง npx @playwright/mcp@latest คุณยังสามารถตรวจสอบการกำหนดค่าหรือเพิ่มอาร์กิวเมนต์เหมือนคำสั่งได้โดยคลิก Edit
Factory
ใช้ Factory CLI เพื่อเพิ่ม Playwright MCP server:
droid mcp add playwright "npx @playwright/mcp@latest"
หรืออีกทางเลือกหนึ่ง พิมพ์ /mcp ภายใน Factory droid เพื่อเปิดอินเทอร์เฟซ UI แบบโต้ตอบสำหรับจัดการ MCP servers
สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบ MCP ของ Factory
Gemini CLI
ปฏิบัติตาม คำแนะนำ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน
Goose
คลิกปุ่มเพื่อติดตั้ง:
หรือติดตั้งด้วยตนเอง:
ไปที่ Advanced settings -> Extensions -> Add custom extension ตั้งชื่อตามที่คุณต้องการ ใช้ประเภท STDIO และตั้งค่า command เป็น npx @playwright/mcp คลิก "Add Extension"
Grok
ใช้ Grok CLI เพื่อเพิ่ม Playwright MCP server:
grok mcp add playwright -- npx @playwright/mcp@latest
หรืออีกทางเลือกหนึ่ง สร้างหรือแก้ไขไฟล์การกำหนดค่า ~/.grok/config.toml และเพิ่ม:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบ MCP ของ Grok
Junie
เพื่อเพิ่ม Playwright MCP server ใน Junie CLI:
- พิมพ์
/mcp - กด
Ctrl+Aเพื่อเพิ่ม MCP server ใหม่ - เลือก Playwright จากรายการ
หรืออีกทางเลือกหนึ่ง เพิ่มใน .junie/mcp/mcp.json:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
สำหรับข้อมูลเพิ่มเติม ดู เอกสารประกอบการกำหนดค่า MCP ของ Junie
Kiro
ปฏิบัติตาม เอกสารประกอบ MCP Servers ตัวอย่างเช่นใน .kiro/settings/mcp.json:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
LM Studio
คลิกปุ่มเพื่อติดตั้ง:
หรือติดตั้งด้วยตนเอง:
ไปที่ Program ในแถบด้านข้างขวา -> Install -> Edit mcp.json ใช้การกำหนดค่ามาตรฐานด้านบน
opencode
ปฏิบัติตาม เอกสารประกอบ MCP Servers ตัวอย่างเช่นใน ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
Qodo Gen
เปิดแผงแชท Qodo Gen ใน VSCode หรือ IntelliJ → Connect more tools → + Add new MCP → วางการกำหนดค่ามาตรฐานด้านบน
คลิก Save
VS Code
คลิกปุ่มเพื่อติดตั้ง:
หรือติดตั้งด้วยตนเอง:
ปฏิบัติตาม คำแนะนำ การติดตั้ง MCP ใช้การกำหนดค่ามาตรฐานด้านบน คุณยังสามารถติดตั้ง Playwright MCP server โดยใช้ VS Code CLI:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
หลังการติดตั้ง Playwright MCP server จะพร้อมใช้งานกับ GitHub Copilot agent ของคุณใน VS Code
Warp
ไปที่ Settings -> AI -> Manage MCP Servers -> + Add เพื่อ เพิ่ม MCP Server ใช้การกำหนดค่ามาตรฐานด้านบน
หรืออีกทางเลือกหนึ่ง ใช้คำสั่ง slash /add-mcp ในพรอมต์ Warp และวางการกำหนดค่ามาตรฐานจากด้านบน:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Windsurf
ปฏิบัติตาม เอกสารประกอบ MCP ของ Windsurf ใช้การกำหนดค่ามาตรฐานด้านบน
การกำหนดค่า
Playwright MCP server รองรับอาร์กิวเมนต์ต่อไปนี้ สามารถระบุได้ในการกำหนดค่า JSON ด้านบน เป็นส่วนหนึ่งของรายการ "args":
| ตัวเลือก | คำอธิบาย |
|---|---|
| --allowed-hosts <hosts...> | รายการโฮสต์ที่คั่นด้วยเครื่องหมายจุลภาคซึ่งเซิร์ฟเวอร์นี้ได้รับอนุญาตให้ให้บริการได้ ค่าเริ่มต้นคือโฮสต์ที่เซิร์ฟเวอร์ผูกอยู่ ใช้ '*' เพื่อปิดการตรวจสอบโฮสต์ env PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | รายการต้นทางที่เชื่อถือได้ซึ่งคั่นด้วยเครื่องหมายอัฒภาคเพื่ออนุญาตให้เบราว์เซอร์ร้องขอ ค่าเริ่มต้นคืออนุญาตทั้งหมด ข้อสำคัญ: ไม่ใช่ ขอบเขตความปลอดภัย และ ไม่มีผล ต่อการเปลี่ยนเส้นทาง env PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
| --allow-unrestricted-file-access | อนุญาตการเข้าถึงไฟล์ภายนอกโฟลเดอร์รากของพื้นที่ทำงาน นอกจากนี้ยังอนุญาตการเข้าถึง URL แบบ file:// อย่างไม่จำกัด โดยค่าเริ่มต้น การเข้าถึงระบบไฟล์จะถูกจำกัดเฉพาะโฟลเดอร์รากของพื้นที่ทำงาน (หรือไดเรกทอรีปัจจุบันหากไม่ได้กำหนดราก) เท่านั้น และการนำทางไปยัง URL แบบ file:// จะถูกบล็อก env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
| --blocked-origins | รายการต้นทางที่คั่นด้วยเครื่องหมายอัฒภาคเพื่อบล็อกไม่ให้เบราว์เซอร์ร้องขอ รายการบล็อกจะถูกประเมินก่อนรายการอนุญาต หากใช้โดยไม่มีรายการอนุญาต คำขอที่ไม่ตรงกับรายการบล็อกจะยังคงได้รับอนุญาต ข้อสำคัญ: ไม่ใช่ ขอบเขตความปลอดภัย และ ไม่มีผล ต่อการเปลี่ยนเส้นทาง env PLAYWRIGHT_MCP_BLOCKED_ORIGINS |
| --block-service-workers | บล็อก service workers env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS |
| --browser | เบราว์เซอร์หรือช่องทาง chrome ที่จะใช้ ค่าที่เป็นไปได้: chrome, firefox, webkit, msedge. env PLAYWRIGHT_MCP_BROWSER |
| --caps | รายการความสามารถเพิ่มเติมที่คั่นด้วยเครื่องหมายจุลภาคเพื่อเปิดใช้งาน ค่าที่เป็นไปได้: vision, pdf, devtools. env PLAYWRIGHT_MCP_CAPS |
| --cdp-endpoint | จุดสิ้นสุด CDP ที่จะเชื่อมต่อ env PLAYWRIGHT_MCP_CDP_ENDPOINT |
| --cdp-header <headers...> | ส่วนหัว CDP ที่จะส่งพร้อมกับคำขอเชื่อมต่อ สามารถระบุได้หลายรายการ env PLAYWRIGHT_MCP_CDP_HEADERS |
| --cdp-timeout | ระยะหมดเวลาเป็นมิลลิวินาทีสำหรับการเชื่อมต่อกับจุดสิ้นสุด CDP ค่าเริ่มต้นคือ 30000ms env PLAYWRIGHT_MCP_CDP_TIMEOUT |
| --codegen | ระบุภาษาที่ใช้สำหรับการสร้างโค้ด ค่าที่เป็นไปได้: "typescript", "python", "java", "csharp", "none" ค่าเริ่มต้นคือ "typescript" env PLAYWRIGHT_MCP_CODEGEN |
| --config | เส้นทางไปยังไฟล์การกำหนดค่า env PLAYWRIGHT_MCP_CONFIG |
| --console-level | ระดับของข้อความคอนโซลที่จะส่งคืน: "error", "warning", "info", "debug" แต่ละระดับจะรวมข้อความของระดับที่รุนแรงกว่า env PLAYWRIGHT_MCP_CONSOLE_LEVEL |
| --device | อุปกรณ์ที่จะจำลอง เช่น: "iPhone 15" env PLAYWRIGHT_MCP_DEVICE |
| --mobile | จำลองอุปกรณ์มือถือทั่วไป (Pixel 10 สำหรับ Chromium, iPhone 17 สำหรับ WebKit) หน้าเว็บมือถือมักจะเบากว่า ซึ่งช่วยประหยัดโทเค็น ไม่สามารถใช้ร่วมกับ --device ได้ env PLAYWRIGHT_MCP_MOBILE |
| --executable-path | เส้นทางไปยังไฟล์ปฏิบัติการของเบราว์เซอร์ env PLAYWRIGHT_MCP_EXECUTABLE_PATH |
| --extension | เชื่อมต่อกับอินสแตนซ์เบราว์เซอร์ที่กำลังทำงานอยู่ (เฉพาะ Edge/Chrome) ต้องติดตั้ง "Playwright Extension" env PLAYWRIGHT_MCP_EXTENSION |
| --endpoint | จุดสิ้นสุดเบราว์เซอร์ที่ผูกไว้เพื่อเชื่อมต่อ env PLAYWRIGHT_MCP_ENDPOINT |
| --grant-permissions <permissions...> | รายการสิทธิ์ที่จะอนุญาตให้กับบริบทเบราว์เซอร์ เช่น "geolocation", "clipboard-read", "clipboard-write" env PLAYWRIGHT_MCP_GRANT_PERMISSIONS |
| --headless | เรียกใช้เบราว์เซอร์ในโหมด headless โดยค่าเริ่มต้นจะแสดงหน้าต่าง env PLAYWRIGHT_MCP_HEADLESS |
| --host | โฮสต์ที่จะผูกเซิร์ฟเวอร์ ค่าเริ่มต้นคือ localhost ใช้ 0.0.0.0 เพื่อผูกกับอินเทอร์เฟซทั้งหมด env PLAYWRIGHT_MCP_HOST |
| --ignore-https-errors | ไม่สนใจข้อผิดพลาด https env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS |
| --init-page <path...> | เส้นทางไปยังไฟล์ TypeScript ที่จะประเมินบนออบเจกต์หน้า Playwright env PLAYWRIGHT_MCP_INIT_PAGE |
| --init-script <path...> | เส้นทางไปยังไฟล์ JavaScript ที่จะเพิ่มเป็นสคริปต์เริ่มต้น สคริปต์จะถูกประเมินในทุกหน้าก่อนสคริปต์ใดๆ ของหน้านั้น สามารถระบุได้หลายครั้ง env PLAYWRIGHT_MCP_INIT_SCRIPT |
| --isolated | เก็บโปรไฟล์เบราว์เซอร์ไว้ในหน่วยความจำ อย่าบันทึกลงดิสก์ env PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | ว่าจะส่งการตอบสนองรูปภาพไปยังไคลเอ็นต์หรือไม่ สามารถเป็น "allow" หรือ "omit" ค่าเริ่มต้นคือ "allow" env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | ปิดใช้งาน sandbox สำหรับทุกประเภทกระบวนการที่ปกติถูก sandbox env PLAYWRIGHT_MCP_NO_SANDBOX |
| --output-dir | เส้นทางไปยังไดเรกทอรีสำหรับไฟล์เอาต์พุต env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | เกณฑ์สำหรับการไล่ไฟล์เอาต์พุตเก่าออก เป็นไบต์ env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --port | พอร์ตที่ใช้ฟังสำหรับการส่งข้อมูล SSE env PLAYWRIGHT_MCP_PORT |
| --proxy-bypass | โดเมนที่คั่นด้วยเครื่องหมายจุลภาคเพื่อข้ามพร็อกซี เช่น ".com,chromium.org,.domain.com" env PLAYWRIGHT_MCP_PROXY_BYPASS |
| --proxy-server | ระบุเซิร์ฟเวอร์พร็อกซี เช่น "http://myproxy:3128" หรือ "socks5://myproxy:8080" env PLAYWRIGHT_MCP_PROXY_SERVER |
| --sandbox | เปิดใช้งาน sandbox สำหรับทุกประเภทกระบวนการที่ปกติไม่ถูก sandbox env PLAYWRIGHT_MCP_SANDBOX |
| --save-session | ว่าจะบันทึกเซสชัน Playwright MCP ลงในไดเรกทอรีเอาต์พุตหรือไม่ env PLAYWRIGHT_MCP_SAVE_SESSION |
| --secrets | เส้นทางไปยังไฟล์ที่มีความลับในรูปแบบ dotenv env PLAYWRIGHT_MCP_SECRETS_FILE |
| --shared-browser-context | ใช้บริบทเบราว์เซอร์เดียวกันระหว่างไคลเอ็นต์ HTTP ที่เชื่อมต่อทั้งหมด env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT |
| --snapshot-boxes | รวมกรอบขอบเขตของแต่ละองค์ประกอบเป็น [box=x,y,width,height] ในสแนปช็อต พิกัดสัมพันธ์กับวิวพอร์ต เป็นพิกเซล CSS env PLAYWRIGHT_MCP_SNAPSHOT_BOXES |
| --snapshot-mode | เมื่อถ่ายสแนปช็อตสำหรับการตอบสนอง ระบุโหมดที่จะใช้ สามารถเป็น "full" หรือ "none" ค่าเริ่มต้นคือ "full" env PLAYWRIGHT_MCP_SNAPSHOT_MODE |
| --storage-state | เส้นทางไปยังไฟล์สถานะการจัดเก็บสำหรับเซสชันแบบแยก env PLAYWRIGHT_MCP_STORAGE_STATE |
| --test-id-attribute | ระบุแอตทริบิวต์ที่ใช้สำหรับ test ids ค่าเริ่มต้นคือ "data-testid" env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | ระบุระยะหมดเวลาการดำเนินการเป็นมิลลิวินาที ค่าเริ่มต้นคือ 5000ms env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | ระบุระยะหมดเวลาการนำทางเป็นมิลลิวินาที ค่าเริ่มต้นคือ 60000ms env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --timeout-settle | รอนานเท่าใดหลังจากการดำเนินการแต่ละครั้งเพื่อให้งานที่ถูกกระตุ้นสงบลง เป็นมิลลิวินาที ค่าเริ่มต้นคือ 500ms env PLAYWRIGHT_MCP_TIMEOUT_SETTLE |
| --user-agent | ระบุสตริง user agent env PLAYWRIGHT_MCP_USER_AGENT |
| --user-data-dir | เส้นทางไปยังไดเรกทอรีข้อมูลผู้ใช้ หากไม่ระบุ จะสร้างไดเรกทอรีชั่วคราว env PLAYWRIGHT_MCP_USER_DATA_DIR |
| --viewport-size | ระบุขนาดวิวพอร์ตเบราว์เซอร์เป็นพิกเซล เช่น "1280x720" env PLAYWRIGHT_MCP_VIEWPORT_SIZE |
โปรไฟล์ผู้ใช้
คุณสามารถเรียกใช้ Playwright MCP ด้วยโปรไฟล์ถาวรเหมือนเบราว์เซอร์ทั่วไป (ค่าเริ่มต้น) ในบริบทแบบแยกสำหรับเซสชันการทดสอบ หรือเชื่อมต่อกับเบราว์เซอร์ที่มีอยู่ของคุณโดยใช้ส่วนขยายเบราว์เซอร์
โปรไฟล์ถาวร
ข้อมูลที่เข้าสู่ระบบทั้งหมดจะถูกเก็บไว้ในโปรไฟล์ถาวร คุณสามารถลบระหว่างเซสชันได้หากต้องการล้างสถานะออฟไลน์
โปรไฟล์ถาวรจะอยู่ที่ตำแหน่งต่อไปนี้ และคุณสามารถแทนที่ได้ด้วยอาร์กิวเมนต์ --user-data-dir
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}
{workspace-hash} มาจากโฟลเดอร์รากพื้นที่ทำงานของไคลเอ็นต์ MCP ดังนั้นโปรเจกต์ที่แตกต่างกันจะได้รับโปรไฟล์แยกกันโดยอัตโนมัติ
[!IMPORTANT] โปรไฟล์ถาวรสามารถใช้ได้กับอินสแตนซ์เบราว์เซอร์เดียวในแต่ละครั้ง ดังนั้นไคลเอ็นต์ MCP พร้อมกันที่ใช้พื้นที่ทำงานเดียวกันจะขัดแย้งกัน หากต้องการเรียกใช้ไคลเอ็นต์หลายตัวพร้อมกัน ให้เริ่มไคลเอ็นต์เพิ่มเติมแต่ละตัวด้วย
--isolatedหรือชี้ไปที่--user-data-dirที่แตกต่างกัน
แบบแยก
ในโหมดแยก แต่ละเซสชันจะเริ่มต้นในโปรไฟล์แบบแยก ทุกครั้งที่คุณขอให้ MCP ปิดเบราว์เซอร์
เซสชันจะถูกปิดและสถานะการจัดเก็บทั้งหมดสำหรับเซสชันนี้จะหายไป คุณสามารถให้สถานะการจัดเก็บเริ่มต้น
แก่เบราว์เซอร์ผ่าน contextOptions ของการกำหนดค่าหรือผ่านอาร์กิวเมนต์ --storage-state เรียนรู้เพิ่มเติมเกี่ยวกับสถานะการจัดเก็บ ที่นี่
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}
ส่วนขยายเบราว์เซอร์
ส่วนขยาย Chrome ของ Playwright MCP ช่วยให้คุณเชื่อมต่อกับแท็บเบราว์เซอร์ที่มีอยู่และใช้ประโยชน์จากเซสชันที่เข้าสู่ระบบและสถานะเบราว์เซอร์ของคุณ ดู microsoft/playwright › packages/extension สำหรับคำแนะนำการติดตั้งและการตั้งค่า
สถานะเริ่มต้น
มีหลายวิธีในการให้สถานะเริ่มต้นแก่บริบทเบราว์เซอร์หรือหน้า
สำหรับสถานะการจัดเก็บ คุณสามารถ:
- เริ่มต้นด้วยไดเรกทอรีข้อมูลผู้ใช้โดยใช้อาร์กิวเมนต์
--user-data-dirซึ่งจะคงข้อมูลเบราว์เซอร์ทั้งหมดระหว่างเซสชัน - เริ่มต้นด้วยไฟล์สถานะการจัดเก็บโดยใช้อาร์กิวเมนต์
--storage-stateซึ่งจะโหลดคุกกี้และที่จัดเก็บในเครื่องจากไฟล์ลงในบริบทเบราว์เซอร์แบบแยก
สำหรับสถานะหน้า คุณสามารถใช้:
--init-pageเพื่อชี้ไปยังไฟล์ TypeScript ที่จะประเมินบนออบเจกต์หน้า Playwright ซึ่งช่วยให้คุณเรียกใช้โค้ดใดๆ เพื่อตั้งค่าหน้า
// init-page.ts
export default async ({ page }) => {
await page.context().grantPermissions(['geolocation']);
await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
await page.setViewportSize({ width: 1280, height: 720 });
};
--init-scriptเพื่อชี้ไปยังไฟล์ JavaScript ที่จะเพิ่มเป็นสคริปต์เริ่มต้น สคริปต์จะถูกประเมินในทุกหน้าก่อนสคริปต์ใดๆ ของหน้านั้น ซึ่งมีประโยชน์สำหรับการแทนที่ API ของเบราว์เซอร์หรือการตั้งค่าสภาพแวดล้อม
// init-script.js
window.isPlaywrightMCP = true;
ไฟล์การกำหนดค่า
เซิร์ฟเวอร์ Playwright MCP สามารถกำหนดค่าได้โดยใช้ไฟล์การกำหนดค่า JSON คุณสามารถระบุไฟล์การกำหนดค่า
โดยใช้ตัวเลือกบรรทัดคำสั่ง --config:
npx @playwright/mcp@latest --config path/to/config.json
โครงร่างไฟล์การกำหนดค่า
{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record<string, string>;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server. May be a
* WebSocket URL string, or a [ConnectOptions] object that mirrors the
* `connectOptions` shape used by the test runner. When passed as an object,
* `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
* underlying connect call.
*/
remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright Extension" to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory to save output files.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
/**
* How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
*/
settle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/
imageResponses?: 'allow' | 'omit';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
/**
* Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
* Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}
เซิร์ฟเวอร์ MCP แบบสแตนด์อโลน
เมื่อเรียกใช้เบราว์เซอร์แบบมีหน้าต่างบนระบบที่ไม่มีจอแสดงผลหรือจากกระบวนการทำงานของ IDE
ให้เรียกใช้เซิร์ฟเวอร์ MCP จากสภาพแวดล้อมที่มี DISPLAY และส่งแฟล็ก --port เพื่อเปิดใช้งานการส่งข้อมูล HTTP
npx @playwright/mcp@latest --port 8931
จากนั้นในการกำหนดค่าไคลเอ็นต์ MCP ให้ตั้งค่า url เป็นจุดสิ้นสุด HTTP:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
ความปลอดภัย
Playwright MCP ไม่ใช่ ขอบเขตความปลอดภัย ดู แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยของ MCP สำหรับคำแนะนำในการรักษาความปลอดภัยการปรับใช้ของคุณ
Docker
หมายเหตุ: การใช้งาน Docker ในขณะนี้รองรับเฉพาะ chromium แบบ headless เท่านั้น
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}
หรือหากคุณต้องการเรียกใช้คอนเทนเนอร์เป็นบริการระยะยาวแทนที่จะให้ไคลเอ็นต์ MCP สร้างขึ้น ให้ใช้:
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
/app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0
เซิร์ฟเวอร์จะฟังบนพอร์ตโฮสต์ 8931 และสามารถเข้าถึงได้โดยไคลเอ็นต์ MCP ใดๆ
คุณสามารถสร้างอิมเมจ Docker ได้ด้วยตัวเอง
docker build -t mcr.microsoft.com/playwright/mcp .
การใช้งานเชิงโปรแกรม
import http from 'http';
import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => {
// ...
// Creates a headless Playwright MCP server with SSE transport
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
const transport = new SSEServerTransport('/messages', res);
await connection.connect(transport);
// ...
});
เครื่องมือ
การทำงานอัตโนมัติหลัก
- browser_click
- ชื่อ: คลิก
- คำอธิบาย: ดำเนินการคลิกบนหน้าเว็บ
- พารามิเตอร์:
element(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันdoubleClick(บูลีน, ไม่บังคับ): ระบุว่าจะคลิกสองครั้งแทนการคลิกครั้งเดียวหรือไม่button(สตริง, ไม่บังคับ): ปุ่มที่จะคลิก ค่าเริ่มต้นคือปุ่มซ้ายmodifiers(อาร์เรย์, ไม่บังคับ): ปุ่มปรับแต่งที่จะกด
- อ่านอย่างเดียว: false
- browser_close
- ชื่อ: ปิดเบราว์เซอร์
- คำอธิบาย: ปิดหน้า
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: false
- browser_console_messages
- ชื่อ: รับข้อความคอนโซล
- คำอธิบาย: ส่งคืนข้อความคอนโซลทั้งหมด
- พารามิเตอร์:
level(สตริง): ระดับของข้อความคอนโซลที่จะส่งคืน แต่ละระดับรวมข้อความของระดับที่รุนแรงกว่า ค่าเริ่มต้นคือ "info"all(บูลีน, ไม่บังคับ): ส่งคืนข้อความคอนโซลทั้งหมดตั้งแต่เริ่มต้นเซสชัน ไม่ใช่เฉพาะตั้งแต่การนำทางครั้งล่าสุด ค่าเริ่มต้นคือ falsefilename(สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกข้อความคอนโซล หากไม่ระบุ ข้อความจะถูกส่งคืนเป็นข้อความ
- อ่านอย่างเดียว: true
- browser_drag
- ชื่อ: ลากเมาส์
- คำอธิบาย: ดำเนินการลากและวางระหว่างสององค์ประกอบ
- พารามิเตอร์:
startElement(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบต้นทางที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบstartTarget(สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันendElement(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบเป้าหมายที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบendTarget(สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
- อ่านอย่างเดียว: false
- browser_drop
- ชื่อ: วางไฟล์หรือข้อมูลลงบนองค์ประกอบ
- คำอธิบาย: วางไฟล์หรือข้อมูลประเภท MIME ลงบนองค์ประกอบ เหมือนกับถูกลากจากภายนอกหน้า ต้องระบุอย่างน้อยหนึ่งใน "paths" หรือ "data"
- พารามิเตอร์:
element(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันpaths(อาร์เรย์, ไม่บังคับ): เส้นทางสัมบูรณ์ไปยังไฟล์ที่จะวางลงบนองค์ประกอบdata(ออบเจกต์, ไม่บังคับ): ข้อมูลที่จะวาง เป็นแผนที่ของประเภท MIME ไปยังค่าสตริง (เช่น {"text/plain": "hello", "text/uri-list": "https://example.com"})
- อ่านอย่างเดียว: false
- browser_evaluate
- ชื่อ: ประเมิน JavaScript
- คำอธิบาย: ประเมินนิพจน์ JavaScript บนหน้าหรือองค์ประกอบ
- พารามิเตอร์:
element(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(สตริง, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันfunction(สตริง): () => { /* code / } หรือ (element) => { / code */ } เมื่อระบุองค์ประกอบfilename(สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกผลลัพธ์ หากไม่ระบุ ผลลัพธ์จะถูกส่งคืนเป็นข้อความ
- อ่านอย่างเดียว: false
- browser_file_upload
- ชื่อ: อัปโหลดไฟล์
- คำอธิบาย: อัปโหลดไฟล์หนึ่งหรือหลายไฟล์
- พารามิเตอร์:
paths(อาร์เรย์, ไม่บังคับ): เส้นทางสัมบูรณ์ไปยังไฟล์ที่จะอัปโหลด สามารถเป็นไฟล์เดียวหรือหลายไฟล์ หากละเว้น ตัวเลือกไฟล์จะถูกยกเลิก
- อ่านอย่างเดียว: false
- browser_fill_form
- ชื่อ: กรอกแบบฟอร์ม
- คำอธิบาย: กรอกหลายช่องฟอร์ม
- พารามิเตอร์:
fields(อาร์เรย์): ช่องที่จะกรอก
- อ่านอย่างเดียว: false
- browser_find
- ชื่อ: ค้นหาในสแนปช็อตของหน้า
- คำอธิบาย: ค้นหาข้อความหรือนิพจน์ปกติในสแนปช็อตการเข้าถึงของหน้าปัจจุบัน ส่งคืนโหนดสแนปช็อตที่ตรงกันพร้อมบริบทรอบข้างสองสามบรรทัด (เหมือนตัวอย่างการค้นหา) แต่ละรายการแสดงภายใต้เส้นทางจากรากของทรี ซึ่งถูกกว่าการจับสแนปช็อตทั้งหมดเมื่อคุณเพียงต้องการค้นหาองค์ประกอบและ ref ของมัน
- พารามิเตอร์:
text(สตริง, ไม่บังคับ): ข้อความธรรมดาที่จะค้นหาในสแนปช็อตของหน้า (การจับคู่สตริงย่อยที่ไม่คำนึงถึงตัวพิมพ์เล็กใหญ่) ระบุข้อความหรือ regex อย่างใดอย่างหนึ่ง ไม่ใช่ทั้งสองอย่างregex(สตริง, ไม่บังคับ): นิพจน์ปกติที่จะค้นหาในสแนปช็อตของหน้า การจับคู่คำนึงถึงตัวพิมพ์เล็กใหญ่โดยค่าเริ่มต้น ครอบรูปแบบด้วยเครื่องหมายทับเพื่อเพิ่มแฟล็ก เช่น "/error/i" สำหรับไม่คำนึงถึงตัวพิมพ์เล็กใหญ่ ระบุข้อความหรือ regex อย่างใดอย่างหนึ่ง ไม่ใช่ทั้งสองอย่าง
- อ่านอย่างเดียว: true
- browser_handle_dialog
- ชื่อ: จัดการไดอะล็อก
- คำอธิบาย: จัดการไดอะล็อก
- พารามิเตอร์:
accept(บูลีน): ระบุว่าจะยอมรับไดอะล็อกหรือไม่promptText(สตริง, ไม่บังคับ): ข้อความของพรอมป์ในกรณีที่เป็นไดอะล็อกพรอมป์
- อ่านอย่างเดียว: false
- browser_hover
- ชื่อ: โฮเวอร์เมาส์
- คำอธิบาย: โฮเวอร์เหนือองค์ประกอบบนหน้า
- พารามิเตอร์:
element(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
- อ่านอย่างเดียว: false
- browser_navigate
- ชื่อ: นำทางไปยัง URL
- คำอธิบาย: นำทางไปยัง URL
- พารามิเตอร์:
url(สตริง): URL ที่จะนำทางไป
- อ่านอย่างเดียว: false
- browser_navigate_back
- ชื่อ: กลับไป
- คำอธิบาย: กลับไปยังหน้าก่อนหน้าในประวัติ
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: false
- browser_network_request
- ชื่อ: แสดงรายละเอียดคำขอเครือข่าย
- คำอธิบาย: ส่งคืนรายละเอียดทั้งหมด (ส่วนหัวและเนื้อหา) ของคำขอเครือข่ายเดียว หรือส่วนเดียวหากตั้งค่า
partใช้หมายเลขจาก browser_network_requests - พารามิเตอร์:
index(จำนวนเต็ม): ดัชนี 1-based ของคำขอ ตามที่พิมพ์โดย browser_network_requestspart(สตริง, ไม่บังคับ): ส่งคืนเฉพาะส่วนนี้ของคำขอ ละเว้นเพื่อส่งคืนรายละเอียดทั้งหมดfilename(สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกผลลัพธ์ หากไม่ระบุ ผลลัพธ์จะถูกส่งคืนเป็นข้อความ
- อ่านอย่างเดียว: true
- browser_network_requests
- ชื่อ: รายการคำขอเครือข่าย
- คำอธิบาย: ส่งคืนรายการหมายเลขของคำขอเครือข่ายตั้งแต่โหลดหน้า ใช้ browser_network_request พร้อมหมายเลขเพื่อรับรายละเอียดทั้งหมด
- พารามิเตอร์:
static(บูลีน): ระบุว่าจะรวมทรัพยากรคงที่ที่สำเร็จ เช่น รูปภาพ ฟอนต์ สคริปต์ ฯลฯ หรือไม่ ค่าเริ่มต้นคือ falsefilter(สตริง, ไม่บังคับ): ส่งคืนเฉพาะคำขอที่ URL ตรงกับ regexp นี้ (เช่น "/api/.*user")filename(สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกคำขอเครือข่าย หากไม่ระบุ คำขอจะถูกส่งคืนเป็นข้อความ
- อ่านอย่างเดียว: true
- browser_press_key
- ชื่อ: กดปุ่ม
- คำอธิบาย: กดปุ่มบนแป้นพิมพ์
- พารามิเตอร์:
key(สตริง): ชื่อของปุ่มที่จะกดหรืออักขระที่จะสร้าง เช่นArrowLeftหรือa
- อ่านอย่างเดียว: false
- browser_resize
- ชื่อ: ปรับขนาดหน้าต่างเบราว์เซอร์
- คำอธิบาย: ปรับขนาดหน้าต่างเบราว์เซอร์
- พารามิเตอร์:
width(ตัวเลข): ความกว้างของหน้าต่างเบราว์เซอร์height(ตัวเลข): ความสูงของหน้าต่างเบราว์เซอร์
- อ่านอย่างเดียว: false
- browser_run_code_unsafe
- ชื่อ: รันโค้ด Playwright (ไม่ปลอดภัย)
- คำอธิบาย: รันโค้ดสั้นๆ ของ Playwright ไม่ปลอดภัย: ดำเนินการ JavaScript ตามอำเภอใจในกระบวนการเซิร์ฟเวอร์ Playwright และเทียบเท่ากับ RCE
- พารามิเตอร์:
code(สตริง, ไม่บังคับ): ฟังก์ชัน JavaScript ที่มีโค้ด Playwright ที่จะดำเนินการ จะถูกเรียกด้วยอาร์กิวเมนต์เดียวคือ page ซึ่งคุณสามารถใช้สำหรับการโต้ตอบกับหน้าใดก็ได้ ตัวอย่างเช่น:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(สตริง, ไม่บังคับ): โหลดโค้ดจากไฟล์ที่ระบุ หากระบุทั้งโค้ดและชื่อไฟล์ โค้ดจะถูกละเว้น
- อ่านอย่างเดียว: false
- browser_select_option
- ชื่อ: เลือกตัวเลือก
- คำอธิบาย: เลือกตัวเลือกในดรอปดาวน์
- พารามิเตอร์:
element(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันvalues(อาร์เรย์): อาร์เรย์ของค่าที่จะเลือกในดรอปดาวน์ สามารถเป็นค่าเดียวหรือหลายค่า
- อ่านอย่างเดียว: false
- browser_snapshot
- ชื่อ: สแนปช็อตของหน้า
- คำอธิบาย: จับสแนปช็อตการเข้าถึงของหน้าปัจจุบัน ดีกว่าการจับภาพหน้าจอ
- พารามิเตอร์:
target(สตริง, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันfilename(สตริง, ไม่บังคับ): บันทึกสแนปช็อตเป็นไฟล์ markdown แทนการส่งคืนในการตอบสนองdepth(ตัวเลข, ไม่บังคับ): จำกัดความลึกของทรีสแนปช็อตboxes(บูลีน, ไม่บังคับ): รวมกรอบขอบเขตของแต่ละองค์ประกอบเป็น [box=x,y,width,height] ในสแนปช็อต พิกัดสัมพันธ์กับวิวพอร์ต ในหน่วยพิกเซล CSS (Element.getBoundingClientRect)
- อ่านอย่างเดียว: true
- browser_take_screenshot
- ชื่อ: ถ่ายภาพหน้าจอ
- คำอธิบาย: ถ่ายภาพหน้าจอของหน้าปัจจุบัน คุณไม่สามารถดำเนินการตามภาพหน้าจอได้ ใช้ browser_snapshot สำหรับการดำเนินการ
- พารามิเตอร์:
element(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(สตริง, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันtype(สตริง, ไม่บังคับ): รูปแบบภาพสำหรับภาพหน้าจอ หากไม่ตั้งค่า จะอนุมานจากนามสกุลไฟล์ มิฉะนั้นเป็น pngfilename(สตริง, ไม่บังคับ): ชื่อไฟล์เพื่อบันทึกภาพหน้าจอ ค่าเริ่มต้นคือpage-{timestamp}.{png|jpeg|webp}หากไม่ระบุ ควรใช้ชื่อไฟล์สัมพัทธ์เพื่อให้อยู่ในไดเรกทอรีเอาต์พุตfullPage(บูลีน, ไม่บังคับ): เมื่อเป็น true จะถ่ายภาพหน้าจอของหน้าทั้งหมดที่เลื่อนได้ แทนที่จะเป็นวิวพอร์ตที่มองเห็นในปัจจุบัน ไม่สามารถใช้กับภาพหน้าจอองค์ประกอบได้scale(สตริง): สเกลความละเอียดของภาพ "css" สร้างภาพหน้าจอขนาดเป็นพิกเซล CSS (เล็กกว่า สอดคล้องกันในอุปกรณ์ต่างๆ) "device" สร้างภาพหน้าจอความละเอียดสูงโดยใช้พิกเซลอุปกรณ์ (ใหญ่กว่า คำนึงถึงอัตราส่วนพิกเซลอุปกรณ์) ค่าเริ่มต้นคือ css
- อ่านอย่างเดียว: true
- browser_type
- ชื่อ: พิมพ์ข้อความ
- คำอธิบาย: พิมพ์ข้อความลงในองค์ประกอบที่แก้ไขได้
- พารามิเตอร์:
element(สตริง, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(สตริง): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันtext(สตริง): ข้อความที่จะพิมพ์ลงในองค์ประกอบsubmit(บูลีน, ไม่บังคับ): ระบุว่าจะส่งข้อความที่ป้อน (กด Enter หลังจาก) หรือไม่slowly(บูลีน, ไม่บังคับ): ระบุว่าจะพิมพ์ทีละอักขระหรือไม่ มีประโยชน์สำหรับการเรียกใช้ตัวจัดการคีย์ในหน้า โดยค่าเริ่มต้นข้อความทั้งหมดจะถูกกรอกในครั้งเดียว
- อ่านอย่างเดียว: false
- browser_wait_for
- ชื่อ: รอ
- คำอธิบาย: รอให้ข้อความปรากฏหรือหายไป หรือรอตามเวลาที่กำหนด
- พารามิเตอร์:
time(number, ไม่บังคับ): เวลาที่จะรอเป็นวินาทีtext(string, ไม่บังคับ): ข้อความที่ต้องการรอtextGone(string, ไม่บังคับ): ข้อความที่ต้องการรอให้หายไป
- อ่านอย่างเดียว: false
การจัดการแท็บ
- browser_tabs
- ชื่อ: จัดการแท็บ
- คำอธิบาย: แสดงรายการ, สร้าง, ปิด, หรือเลือกแท็บเบราว์เซอร์
- พารามิเตอร์:
action(string): การดำเนินการที่จะทำindex(number, ไม่บังคับ): ดัชนีแท็บ ใช้สำหรับปิด/เลือก หากไม่ระบุสำหรับการปิด แท็บปัจจุบันจะถูกปิดurl(string, ไม่บังคับ): URL ที่จะนำทางในแท็บใหม่ ใช้สำหรับสร้างแท็บใหม่
- อ่านอย่างเดียว: false
การติดตั้งเบราว์เซอร์
การกำหนดค่า (เลือกใช้ผ่าน --caps=config)
- browser_get_config
- ชื่อ: รับการกำหนดค่า
- คำอธิบาย: รับการกำหนดค่าสุดท้ายที่แก้ไขแล้วหลังจากการรวมตัวเลือก CLI, ตัวแปรสภาพแวดล้อม และไฟล์การกำหนดค่า
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
เครือข่าย (เลือกใช้ผ่าน --caps=network)
- browser_network_state_set
- ชื่อ: ตั้งค่าสถานะเครือข่าย
- คำอธิบาย: ตั้งค่าสถานะเครือข่ายของเบราว์เซอร์เป็นออนไลน์หรือออฟไลน์ เมื่อออฟไลน์ คำขอเครือข่ายทั้งหมดจะล้มเหลว
- พารามิเตอร์:
state(string): ตั้งเป็น "offline" เพื่อจำลองโหมดออฟไลน์, "online" เพื่อคืนค่าการเชื่อมต่อเครือข่าย
- อ่านอย่างเดียว: false
- browser_route
- ชื่อ: จำลองคำขอเครือข่าย
- คำอธิบาย: ตั้งค่าเส้นทางเพื่อจำลองคำขอเครือข่ายที่ตรงกับรูปแบบ URL
- พารามิเตอร์:
pattern(string): รูปแบบ URL ที่จะจับคู่ (เช่น "/api/users", "/*.{png,jpg}")status(number, ไม่บังคับ): รหัสสถานะ HTTP ที่จะส่งคืน (ค่าเริ่มต้น: 200)body(string, ไม่บังคับ): เนื้อหาการตอบสนอง (ข้อความหรือสตริง JSON)contentType(string, ไม่บังคับ): ส่วนหัว Content-Type (เช่น "application/json", "text/html")headers(array, ไม่บังคับ): ส่วนหัวที่จะเพิ่มในรูปแบบ "ชื่อ: ค่า"removeHeaders(string, ไม่บังคับ): รายการชื่อส่วนหัวที่คั่นด้วยเครื่องหมายจุลภาคเพื่อลบออกจากคำขอ
- อ่านอย่างเดียว: false
- browser_route_list
- ชื่อ: แสดงรายการเส้นทางเครือข่าย
- คำอธิบาย: แสดงรายการเส้นทางเครือข่ายที่ใช้งานอยู่ทั้งหมด
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_unroute
- ชื่อ: ลบเส้นทางเครือข่าย
- คำอธิบาย: ลบเส้นทางเครือข่ายที่ตรงกับรูปแบบ (หรือลบทั้งหมดหากไม่ระบุรูปแบบ)
- พารามิเตอร์:
pattern(string, ไม่บังคับ): รูปแบบ URL ที่จะลบเส้นทาง (ละเว้นเพื่อลบเส้นทางทั้งหมด)
- อ่านอย่างเดียว: false
พื้นที่จัดเก็บ (เลือกใช้ผ่าน --caps=storage)
- browser_cookie_clear
- ชื่อ: ล้างคุกกี้
- คำอธิบาย: ล้างคุกกี้ทั้งหมด
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: false
- browser_cookie_delete
- ชื่อ: ลบคุกกี้
- คำอธิบาย: ลบคุกกี้เฉพาะ
- พารามิเตอร์:
name(string): ชื่อคุกกี้ที่จะลบ
- อ่านอย่างเดียว: false
- browser_cookie_get
- ชื่อ: รับคุกกี้
- คำอธิบาย: รับคุกกี้เฉพาะตามชื่อ
- พารามิเตอร์:
name(string): ชื่อคุกกี้ที่จะรับ
- อ่านอย่างเดียว: true
- browser_cookie_list
- ชื่อ: แสดงรายการคุกกี้
- คำอธิบาย: แสดงรายการคุกกี้ทั้งหมด (สามารถกรองตามโดเมน/เส้นทางได้)
- พารามิเตอร์:
domain(string, ไม่บังคับ): กรองคุกกี้ตามโดเมนpath(string, ไม่บังคับ): กรองคุกกี้ตามเส้นทาง
- อ่านอย่างเดียว: true
- browser_cookie_set
- ชื่อ: ตั้งค่าคุกกี้
- คำอธิบาย: ตั้งค่าคุกกี้พร้อมแฟล็กเพิ่มเติม (โดเมน, เส้นทาง, วันหมดอายุ, httpOnly, secure, sameSite)
- พารามิเตอร์:
name(string): ชื่อคุกกี้value(string): ค่าคุกกี้domain(string, ไม่บังคับ): โดเมนของคุกกี้path(string, ไม่บังคับ): เส้นทางของคุกกี้expires(number, ไม่บังคับ): วันหมดอายุของคุกกี้เป็น timestamp UnixhttpOnly(boolean, ไม่บังคับ): ว่าคุกกี้เป็น HTTP only หรือไม่secure(boolean, ไม่บังคับ): ว่าคุกกี้เป็น secure หรือไม่sameSite(string, ไม่บังคับ): แอตทริบิวต์ SameSite ของคุกกี้
- อ่านอย่างเดียว: false
- browser_localstorage_clear
- ชื่อ: ล้าง localStorage
- คำอธิบาย: ล้าง localStorage ทั้งหมด
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: false
- browser_localstorage_delete
- ชื่อ: ลบรายการ localStorage
- คำอธิบาย: ลบรายการ localStorage
- พารามิเตอร์:
key(string): คีย์ที่จะลบ
- อ่านอย่างเดียว: false
- browser_localstorage_get
- ชื่อ: รับรายการ localStorage
- คำอธิบาย: รับรายการ localStorage ตามคีย์
- พารามิเตอร์:
key(string): คีย์ที่จะรับ
- อ่านอย่างเดียว: true
- browser_localstorage_list
- ชื่อ: แสดงรายการ localStorage
- คำอธิบาย: แสดงรายการคู่คีย์-ค่าของ localStorage ทั้งหมด
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_localstorage_set
- ชื่อ: ตั้งค่ารายการ localStorage
- คำอธิบาย: ตั้งค่ารายการ localStorage
- พารามิเตอร์:
key(string): คีย์ที่จะตั้งค่าvalue(string): ค่าที่จะตั้งค่า
- อ่านอย่างเดียว: false
- browser_sessionstorage_clear
- ชื่อ: ล้าง sessionStorage
- คำอธิบาย: ล้าง sessionStorage ทั้งหมด
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: false
- browser_sessionstorage_delete
- ชื่อ: ลบรายการ sessionStorage
- คำอธิบาย: ลบรายการ sessionStorage
- พารามิเตอร์:
key(string): คีย์ที่จะลบ
- อ่านอย่างเดียว: false
- browser_sessionstorage_get
- ชื่อ: รับรายการ sessionStorage
- คำอธิบาย: รับรายการ sessionStorage ตามคีย์
- พารามิเตอร์:
key(string): คีย์ที่จะรับ
- อ่านอย่างเดียว: true
- browser_sessionstorage_list
- ชื่อ: แสดงรายการ sessionStorage
- คำอธิบาย: แสดงรายการคู่คีย์-ค่าของ sessionStorage ทั้งหมด
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_sessionstorage_set
- ชื่อ: ตั้งค่ารายการ sessionStorage
- คำอธิบาย: ตั้งค่ารายการ sessionStorage
- พารามิเตอร์:
key(string): คีย์ที่จะตั้งค่าvalue(string): ค่าที่จะตั้งค่า
- อ่านอย่างเดียว: false
- browser_set_storage_state
- ชื่อ: คืนค่าสถานะพื้นที่จัดเก็บ
- คำอธิบาย: คืนค่าสถานะพื้นที่จัดเก็บ (คุกกี้, localStorage) จากไฟล์ การดำเนินการนี้จะล้างคุกกี้และ localStorage ที่มีอยู่ก่อนการคืนค่า
- พารามิเตอร์:
filename(string): เส้นทางไปยังไฟล์สถานะพื้นที่จัดเก็บที่จะคืนค่า
- อ่านอย่างเดียว: false
- browser_storage_state
- ชื่อ: บันทึกสถานะพื้นที่จัดเก็บ
- คำอธิบาย: บันทึกสถานะพื้นที่จัดเก็บ (คุกกี้, localStorage) ลงในไฟล์เพื่อใช้ซ้ำในภายหลัง
- พารามิเตอร์:
filename(string, ไม่บังคับ): ชื่อไฟล์ที่จะบันทึกสถานะพื้นที่จัดเก็บ ค่าเริ่มต้นคือstorage-state-{timestamp}.jsonหากไม่ระบุ
- อ่านอย่างเดียว: true
เครื่องมือนักพัฒนา (เลือกใช้ผ่าน --caps=devtools)
- browser_annotate
- ชื่อ: เขียนคำอธิบายประกอบบนหน้าปัจจุบัน
- คำอธิบาย: เปิด Playwright Dashboard ในโหมดคำอธิบายประกอบสำหรับหน้าปัจจุบันและรอให้ผู้ใช้วาดคำอธิบายประกอบ ส่งคืนภาพหน้าจอที่มีคำอธิบายประกอบ, ARIA snapshot, และรายการคำอธิบายประกอบ
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_hide_highlight
- ชื่อ: ซ่อนการไฮไลต์องค์ประกอบ
- คำอธิบาย: ลบการซ้อนทับไฮไลต์ที่เพิ่มไว้ก่อนหน้านี้สำหรับองค์ประกอบ
- พารามิเตอร์:
element(string, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ซึ่งใช้เมื่อเพิ่มไฮไลต์; ต้องตรงกับค่าที่ส่งไปยัง browser_highlighttarget(string, ไม่บังคับ): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจาก snapshot ของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
- อ่านอย่างเดียว: true
- browser_highlight
- ชื่อ: ไฮไลต์องค์ประกอบ
- คำอธิบาย: แสดงการซ้อนทับไฮไลต์ถาวรรอบองค์ประกอบบนหน้า
- พารามิเตอร์:
element(string, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ซึ่งใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(string): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจาก snapshot ของหน้า หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกันstyle(string, ไม่บังคับ): CSS แบบอินไลน์เพิ่มเติมที่ใช้กับการซ้อนทับไฮไลต์ เช่น "outline: 2px dashed red"
- อ่านอย่างเดียว: true
- browser_resume
- ชื่อ: ดำเนินการต่อการทำงานสคริปต์ที่หยุดชั่วคราว
- คำอธิบาย: ดำเนินการต่อการทำงานสคริปต์หลังจากที่หยุดชั่วคราว เมื่อเรียกด้วย step เป็น true การทำงานจะหยุดชั่วคราวอีกครั้งก่อนการดำเนินการถัดไป
- พารามิเตอร์:
step(boolean, ไม่บังคับ): เมื่อเป็น true การทำงานจะหยุดชั่วคราวอีกครั้งก่อนการดำเนินการถัดไป เพื่อให้สามารถดีบักทีละขั้นตอนได้location(string, ไม่บังคับ): หยุดการทำงานชั่วคราวที่ : เฉพาะ เช่น "example.spec.ts:42"
- อ่านอย่างเดียว: false
- browser_start_recording
- ชื่อ: เริ่มบันทึกการกระทำของผู้ใช้
- คำอธิบาย: เริ่มบันทึกการกระทำที่ผู้ใช้ทำในเบราว์เซอร์เป็นโค้ด Playwright ใช้เมื่อผู้ใช้ต้องการสาธิตขั้นตอนด้วยตนเอง เรียก browser_stop_recording เมื่อผู้ใช้บอกว่าเสร็จสิ้นเพื่อรับการกระทำที่บันทึกไว้
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_start_tracing
- ชื่อ: เริ่มการติดตาม
- คำอธิบาย: เริ่มการบันทึกการติดตาม
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_start_video
- ชื่อ: เริ่มวิดีโอ
- คำอธิบาย: เริ่มการบันทึกวิดีโอ
- พารามิเตอร์:
filename(string, ไม่บังคับ): ชื่อไฟล์ที่จะบันทึกวิดีโอsize(object, ไม่บังคับ): ขนาดวิดีโอ
- อ่านอย่างเดียว: true
- browser_stop_recording
- ชื่อ: หยุดบันทึกการกระทำของผู้ใช้
- คำอธิบาย: หยุดการบันทึกที่เริ่มด้วย browser_start_recording และส่งคืนการกระทำที่บันทึกไว้เป็นโค้ด Playwright
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_stop_tracing
- ชื่อ: หยุดการติดตาม
- คำอธิบาย: หยุดการบันทึกการติดตาม
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_stop_video
- ชื่อ: หยุดวิดีโอ
- คำอธิบาย: หยุดการบันทึกวิดีโอ
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_video_chapter
- ชื่อ: บทวิดีโอ
- คำอธิบาย: เพิ่มเครื่องหมายบทลงในการบันทึกวิดีโอ แสดงการ์ดบทแบบเต็มหน้าจอพร้อมพื้นหลังเบลอ
- พารามิเตอร์:
title(string): ชื่อบทdescription(string, ไม่บังคับ): คำอธิบายบทduration(number, ไม่บังคับ): ระยะเวลาเป็นมิลลิวินาทีที่จะแสดงการ์ดบท
- อ่านอย่างเดียว: true
- browser_video_hide_actions
- ชื่อ: ซ่อนการซ้อนทับการกระทำ
- คำอธิบาย: หยุดการใส่คำอธิบายประกอบการกระทำที่ทำบนหน้า
- พารามิเตอร์: ไม่มี
- อ่านอย่างเดียว: true
- browser_video_show_actions
- ชื่อ: แสดงป้ายกำกับการทำงาน
- คำอธิบาย: ใส่คำอธิบายประกอบการทำงานที่เกิดขึ้นบนหน้าเว็บด้วยป้ายที่ระบุชื่อการทำงานและไฮไลต์องค์ประกอบเป้าหมาย มีประโยชน์เมื่อบันทึกวิดีโอหรือจับภาพหน้าจอ
- พารามิเตอร์:
duration(number, ไม่บังคับ): ระยะเวลาที่ป้ายกำกับการทำงานแต่ละอันแสดงบนหน้าจอ หน่วยเป็นมิลลิวินาที ค่าเริ่มต้นคือ 500position(string, ไม่บังคับ): ตำแหน่งที่จะวางชื่อการทำงานสัมพันธ์กับหน้าเว็บ ค่าเริ่มต้นคือมุมขวาบนcursor(string, ไม่บังคับ): การตกแต่งเคอร์เซอร์สำหรับการทำงานด้วยตัวชี้ "pointer" (ค่าเริ่มต้น) จะแสดงภาพเคลื่อนไหวของตัวชี้เมาส์จากจุดการทำงานก่อนหน้าไปยังจุดถัดไป "none" จะปิดการตกแต่งเคอร์เซอร์
- อ่านอย่างเดียว: true
ตามพิกัด (เลือกใช้ผ่าน --caps=vision)
- browser_mouse_click_xy
- ชื่อ: คลิก
- คำอธิบาย: คลิกปุ่มเมาส์ที่ตำแหน่งที่กำหนด
- พารามิเตอร์:
x(number): พิกัด Xy(number): พิกัด Ybutton(string, ไม่บังคับ): ปุ่มที่จะคลิก ค่าเริ่มต้นคือปุ่มซ้ายclickCount(number, ไม่บังคับ): จำนวนครั้งที่คลิก ค่าเริ่มต้นคือ 1delay(number, ไม่บังคับ): เวลาที่รอระหว่างกดเมาส์ลงและปล่อยเมาส์ หน่วยเป็นมิลลิวินาที ค่าเริ่มต้นคือ 0
- อ่านอย่างเดียว: false
- browser_mouse_down
- ชื่อ: กดเมาส์ค้าง
- คำอธิบาย: กดเมาส์ค้าง
- พารามิเตอร์:
button(string, ไม่บังคับ): ปุ่มที่จะกด ค่าเริ่มต้นคือปุ่มซ้าย
- อ่านอย่างเดียว: false
- browser_mouse_drag_xy
- ชื่อ: ลากเมาส์
- คำอธิบาย: ลากปุ่มซ้ายของเมาส์ไปยังตำแหน่งที่กำหนด
- พารามิเตอร์:
startX(number): พิกัด X เริ่มต้นstartY(number): พิกัด Y เริ่มต้นendX(number): พิกัด X สิ้นสุดendY(number): พิกัด Y สิ้นสุด
- อ่านอย่างเดียว: false
- browser_mouse_move_xy
- ชื่อ: เลื่อนเมาส์
- คำอธิบาย: เลื่อนเมาส์ไปยังตำแหน่งที่กำหนด
- พารามิเตอร์:
x(number): พิกัด Xy(number): พิกัด Y
- อ่านอย่างเดียว: false
- browser_mouse_up
- ชื่อ: ปล่อยเมาส์
- คำอธิบาย: ปล่อยเมาส์
- พารามิเตอร์:
button(string, ไม่บังคับ): ปุ่มที่จะปล่อย ค่าเริ่มต้นคือปุ่มซ้าย
- อ่านอย่างเดียว: false
- browser_mouse_wheel
- ชื่อ: เลื่อนล้อเมาส์
- คำอธิบาย: เลื่อนล้อเมาส์
- พารามิเตอร์:
deltaX(number): ค่าเดลต้า XdeltaY(number): ค่าเดลต้า Y
- อ่านอย่างเดียว: false
การสร้าง PDF (เลือกใช้ผ่าน --caps=pdf)
- browser_pdf_save
- ชื่อ: บันทึกเป็น PDF
- คำอธิบาย: บันทึกหน้าเว็บเป็น PDF
- พารามิเตอร์:
filename(string, ไม่บังคับ): ชื่อไฟล์ที่จะบันทึก PDF ค่าเริ่มต้นคือpage-{timestamp}.pdfหากไม่ระบุ ควรใช้ชื่อไฟล์แบบสัมพันธ์เพื่อให้อยู่ในไดเรกทอรีเอาต์พุต
- อ่านอย่างเดียว: true
การตรวจสอบการทดสอบ (เลือกใช้ผ่าน --caps=testing)
- browser_generate_locator
- ชื่อ: สร้างตัวระบุตำแหน่งสำหรับองค์ประกอบ
- คำอธิบาย: สร้างตัวระบุตำแหน่งสำหรับองค์ประกอบที่กำหนดเพื่อใช้ในการทดสอบ
- พารามิเตอร์:
element(string, ไม่บังคับ): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้ ใช้เพื่อขออนุญาตโต้ตอบกับองค์ประกอบtarget(string): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตหน้าเว็บ หรือตัวเลือกองค์ประกอบที่ไม่ซ้ำกัน
- อ่านอย่างเดียว: true
- browser_verify_element_visible
- ชื่อ: ตรวจสอบว่าองค์ประกอบมองเห็นได้
- คำอธิบาย: ตรวจสอบว่าองค์ประกอบมองเห็นได้บนหน้าเว็บ
- พารามิเตอร์:
role(string): บทบาท (ROLE) ขององค์ประกอบ สามารถพบได้ในสแนปช็อตเช่นนี้:- {ROLE} "Accessible Name":accessibleName(string): ชื่อที่เข้าถึงได้ (ACCESSIBLE_NAME) ขององค์ประกอบ สามารถพบได้ในสแนปช็อตเช่นนี้:- role "{ACCESSIBLE_NAME}"
- อ่านอย่างเดียว: false
- browser_verify_list_visible
- ชื่อ: ตรวจสอบว่ารายการมองเห็นได้
- คำอธิบาย: ตรวจสอบว่ารายการมองเห็นได้บนหน้าเว็บ
- พารามิเตอร์:
element(string): คำอธิบายรายการที่มนุษย์อ่านได้target(string): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนที่ชี้ไปยังรายการitems(array): รายการที่จะตรวจสอบ
- อ่านอย่างเดียว: false
- browser_verify_text_visible
- ชื่อ: ตรวจสอบว่าข้อความมองเห็นได้
- คำอธิบาย: ตรวจสอบว่าข้อความมองเห็นได้บนหน้าเว็บ ควรใช้ browser_verify_element_visible หากเป็นไปได้
- พารามิเตอร์:
text(string): ข้อความ (TEXT) ที่จะตรวจสอบ สามารถพบได้ในสแนปช็อตเช่นนี้:- role "Accessible Name": {TEXT}หรือเช่นนี้:- text: {TEXT}
- อ่านอย่างเดียว: false
- browser_verify_value
- ชื่อ: ตรวจสอบค่า
- คำอธิบาย: ตรวจสอบค่าขององค์ประกอบ
- พารามิเตอร์:
type(string): ประเภทขององค์ประกอบelement(string): คำอธิบายองค์ประกอบที่มนุษย์อ่านได้target(string): การอ้างอิงองค์ประกอบเป้าหมายที่แน่นอนจากสแนปช็อตหน้าเว็บvalue(string): ค่าที่จะตรวจสอบ สำหรับช่องทำเครื่องหมาย ให้ใช้ "true" หรือ "false"
- อ่านอย่างเดียว: false