Playwright MCP
官方官方 Playwright MCP 伺服器,用於瀏覽器自動化、頁面檢查、螢幕截圖,以及來自 Claude、Cursor 和其他 AI 代理的網頁互動。
你可以用 Playwright MCP 做什麼?
- 無障礙樹狀瀏覽 — 讓您的 AI 導覽頁面並讀取結構化的無障礙快照,無需視覺模型。
- 持久化瀏覽器工作階段 — 透過
--user-data-dir或--storage-state在對話之間保留登入狀態,以進行已驗證的工作流程。 - 多瀏覽器自動化 — 使用
--browser旗標驅動 Chromium、Firefox、WebKit 或 Edge,進行跨引擎測試。 - 裝置模擬 — 透過
--device模擬「iPhone 15」等行動裝置,或使用一般性的--mobile模式進行響應式測試。 - 程式碼產生 — 使用
--codegen選項,以 TypeScript、Python、Java 或 C# 產生 Playwright 測試腳本。 - 隔離的測試環境 — 使用
--isolated旗標執行工作階段,在每次瀏覽器關閉後捨棄所有狀態。
文件
Playwright MCP
一個使用 Playwright 提供瀏覽器自動化能力的 Model Context Protocol (MCP) 伺服器。此伺服器讓 LLM 能透過結構化的無障礙快照與網頁互動,無需依賴螢幕截圖或視覺調校模型。
Playwright MCP 與 Playwright CLI 的比較
此套件提供 Playwright 的 MCP 介面。如果您使用的是程式碼代理(coding agent),您可能會更適合使用 CLI+SKILLS。
-
CLI:現代程式碼代理越來越偏好以 SKILLs 形式暴露的 CLI 工作流程,而非 MCP,因為 CLI 呼叫更具 token 效率:它們避免將大型工具架構和冗長的無障礙樹載入模型上下文,讓代理能透過簡潔、目的明確的命令行動。這使得 CLI + SKILLs 更適合需要在高吞吐量的程式碼代理中,於有限的上下文視窗內平衡瀏覽器自動化與大型程式碼庫、測試和推理。
深入瞭解 Playwright CLI with SKILLS。 -
MCP:MCP 仍適用於特定的代理迴圈,這些迴圈受益於持久狀態、豐富的內省以及對頁面結構的迭代推理,例如探索性自動化、自我修復測試,或需要持續維護瀏覽器上下文而勝過 token 成本考量的長期自主工作流程。
主要特色
- 快速且輕量。使用 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
依照 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 伺服器:
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"
或者,在 Factory droid 中輸入 /mcp 以開啟管理 MCP 伺服器的互動式 UI。
如需更多資訊,請參閱 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
在 Junie CLI 中新增 Playwright MCP 伺服器:
- 輸入
/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"
]
}
}
}
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
在 VSCode 或 IntelliJ 中開啟 Qodo Gen 聊天面板 → Connect more tools → + Add new MCP → 貼上上述標準設定。
點擊 Save。
VS Code
點擊按鈕安裝:
或手動安裝:
依照 MCP 安裝指南,使用上述標準設定。您也可以使用 VS Code CLI 安裝 Playwright MCP 伺服器:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
安裝完成後,Playwright MCP 伺服器即可與您在 VS Code 中的 GitHub Copilot 代理搭配使用。
Warp
前往 Settings -> AI -> Manage MCP Servers -> + Add 以新增 MCP 伺服器。使用上述標準設定。
或者,在 Warp 提示中使用斜線命令 /add-mcp 並貼上上述標準設定:
{
"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 | 允許存取工作區根目錄以外的檔案。同時允許不受限制地存取 file:// URL。預設情況下,檔案系統的存取僅限於工作區根目錄(若未設定根目錄則為目前工作目錄),且封鎖對 file:// URL 的導覽。 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 端點的超時時間(毫秒),預設為 30000 毫秒 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 | 模擬通用行動裝置(Chromium 為 Pixel 10,WebKit 為 iPhone 17)。行動頁面通常較輕量,可節省 token。無法與 --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 | 以無頭模式執行瀏覽器,預設為有頭模式 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...> | 要在 Playwright 頁面物件上評估的 TypeScript 檔案路徑 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 |
| --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-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 | 指定用於測試 ID 的屬性,預設為 "data-testid" env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | 指定動作超時時間(毫秒),預設為 5000 毫秒 env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | 指定導覽超時時間(毫秒),預設為 60000 毫秒 env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --timeout-settle | 每個動作後等待觸發的工作穩定下來的時間(毫秒),預設為 500 毫秒 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}"
]
}
}
}
瀏覽器擴充功能
Playwright MCP Chrome 擴充功能允許您連線至現有的瀏覽器分頁,並利用您已登入的工作階段和瀏覽器狀態。請參閱 microsoft/playwright › packages/extension 以取得安裝和設定說明。
初始狀態
有多種方式可以為瀏覽器內容或頁面提供初始狀態。
對於儲存狀態,您可以:
- 使用
--user-data-dir參數以使用者資料目錄啟動。這將在工作階段之間持久化所有瀏覽器資料。 - 使用
--storage-state參數以儲存狀態檔案啟動。這會將檔案中的 cookie 和本機儲存載入至隔離的瀏覽器內容。
對於頁面狀態,您可以使用:
--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 的工作者處理程序執行有頭瀏覽器時,
請在具有 DISPLAY 的環境中執行 MCP 伺服器,並傳入 --port 旗標以啟用 HTTP 傳輸。
npx @playwright/mcp@latest --port 8931
然後在 MCP 用戶端設定中,將 url 設定為 HTTP 端點:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
安全性
Playwright MCP 不是安全邊界。請參閱 MCP 安全最佳實踐 以取得保護部署的指引。
Docker
注意: Docker 實作目前僅支援無頭 Chromium。
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}
或者,如果您偏好將容器作為長期服務執行,而不是讓 MCP 用戶端啟動它,請使用:
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
/app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0
伺服器將監聽主機連接埠 8931,任何 MCP 用戶端都可以連線。
您可以自行建置 Docker 映像。
docker build -t mcr.microsoft.com/playwright/mcp .
程式化使用
import http from 'http';
import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => {
// ...
// Creates a headless Playwright MCP server with SSE transport
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
const transport = new SSEServerTransport('/messages', res);
await connection.connect(transport);
// ...
});
工具
核心自動化
- browser_click
- 標題:點擊
- 描述:在網頁上執行點擊操作
- 參數:
element(字串,可選):用於取得與元素互動權限的人類可讀元素描述target(字串):頁面快照中的精確目標元素引用,或唯一的元素選擇器doubleClick(布林值,可選):是否執行雙擊而非單擊button(字串,可選):要點擊的按鈕,預設為左鍵modifiers(陣列,可選):要按下的修飾鍵
- 唯讀:false
- browser_close
- 標題:關閉瀏覽器
- 描述:關閉頁面
- 參數:無
- 唯讀:false
- browser_console_messages
- 標題:取得主控台訊息
- 描述:回傳所有主控台訊息
- 參數:
level(字串):要回傳的主控台訊息層級。每個層級包含更嚴重層級的訊息。預設為「info」。all(布林值,可選):回傳自工作階段開始以來的所有主控台訊息,而不僅是自上次導航以來的訊息。預設為 false。filename(字串,可選):要將主控台訊息儲存到的檔案名稱。如果未提供,訊息將以文字形式回傳。
- 唯讀:true
- browser_drag
- 標題:拖曳滑鼠
- 描述:在兩個元素之間執行拖放操作
- 參數:
startElement(字串,可選):用於取得與元素互動權限的人類可讀來源元素描述startTarget(字串):頁面快照中的精確目標元素引用,或唯一的元素選擇器endElement(字串,可選):用於取得與元素互動權限的人類可讀目標元素描述endTarget(字串):頁面快照中的精確目標元素引用,或唯一的元素選擇器
- 唯讀:false
- browser_drop
- 標題:將檔案或資料拖放到元素上
- 描述:將檔案或 MIME 型別資料拖放到元素上,如同從頁面外部拖入。必須提供「paths」或「data」至少其中一項。
- 參數:
element(字串,可選):用於取得與元素互動權限的人類可讀元素描述target(字串):頁面快照中的精確目標元素引用,或唯一的元素選擇器paths(陣列,可選):要拖放到元素上的檔案絕對路徑。data(物件,可選):要拖放的資料,作為 MIME 型別到字串值的對應(例如 {"text/plain": "hello", "text/uri-list": "https://example.com"})。
- 唯讀:false
- browser_evaluate
- 標題:評估 JavaScript
- 描述:在頁面或元素上評估 JavaScript 表達式
- 參數:
element(字串,可選):用於取得與元素互動權限的人類可讀元素描述target(字串,可選):頁面快照中的精確目標元素引用,或唯一的元素選擇器function(字串):() => { /* code / } 或 (element) => { / code */ }(當提供元素時)filename(字串,可選):要將結果儲存到的檔案名稱。如果未提供,結果將以文字形式回傳。
- 唯讀:false
- browser_file_upload
- 標題:上傳檔案
- 描述:上傳一個或多個檔案
- 參數:
paths(陣列,可選):要上傳的檔案絕對路徑。可以是單一檔案或多個檔案。如果省略,檔案選擇器將被取消。
- 唯讀:false
- browser_fill_form
- 標題:填寫表單
- 描述:填寫多個表單欄位
- 參數:
fields(陣列):要填寫的欄位
- 唯讀:false
- browser_find
- 標題:在頁面快照中尋找
- 描述:在目前頁面的無障礙快照中搜尋文字或正規表達式。回傳符合的快照節點,並附帶幾行周圍上下文(類似搜尋片段),每個節點顯示在從樹根開始的路徑下,這比在只需要定位元素及其引用時擷取整個快照更經濟。
- 參數:
text(字串,可選):要在頁面快照中搜尋的純文字(不區分大小寫的子字串比對)。提供文字或正規表達式其中之一,不可同時提供。regex(字串,可選):要在頁面快照中搜尋的正規表達式。預設為區分大小寫;將模式包在斜線中以新增旗標,例如「/error/i」表示不區分大小寫。提供文字或正規表達式其中之一,不可同時提供。
- 唯讀: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 為基礎索引,如 browser_network_requests 所列印。part(字串,可選):僅回傳請求的此部分。省略以回傳完整詳細資訊。filename(字串,可選):要將結果儲存到的檔案名稱。如果未提供,輸出將以文字形式回傳。
- 唯讀:true
- browser_network_requests
- 標題:列出網路請求
- 描述:回傳自載入頁面以來的編號網路請求清單。使用 browser_network_request 搭配編號以取得完整詳細資訊。
- 參數:
static(布林值):是否包含成功的靜態資源,如圖片、字型、腳本等。預設為 false。filter(字串,可選):僅回傳 URL 符合此正規表達式的請求(例如「/api/.*user」)。filename(字串,可選):要將網路請求儲存到的檔案名稱。如果未提供,請求將以文字形式回傳。
- 唯讀:true
- browser_press_key
- 標題:按下按鍵
- 描述:在鍵盤上按下按鍵
- 參數:
key(字串):要按下的按鍵名稱或要產生的字元,例如ArrowLeft或a
- 唯讀:false
- browser_resize
- 標題:調整瀏覽器視窗大小
- 描述:調整瀏覽器視窗大小
- 參數:
width(數字):瀏覽器視窗的寬度height(數字):瀏覽器視窗的高度
- 唯讀:false
- browser_run_code_unsafe
- 標題:執行 Playwright 程式碼(不安全)
- 描述:執行 Playwright 程式碼片段。不安全:在 Playwright 伺服器處理程序中執行任意 JavaScript,等同於 RCE。
- 參數:
code(字串,可選):包含要執行的 Playwright 程式碼的 JavaScript 函式。它將以單一參數 page 呼叫,您可以使用該參數進行任何頁面互動。例如:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(字串,可選):從指定檔案載入程式碼。如果同時提供程式碼和檔案名稱,將忽略程式碼。
- 唯讀:false
- browser_select_option
- 標題:選擇選項
- 描述:在下拉式選單中選擇選項
- 參數:
element(字串,可選):用於取得與元素互動權限的人類可讀元素描述target(字串):頁面快照中的精確目標元素引用,或唯一的元素選擇器values(陣列):要在下拉式選單中選擇的值陣列。可以是單一值或多個值。
- 唯讀:false
- browser_snapshot
- 標題:頁面快照
- 描述:擷取目前頁面的無障礙快照,這比螢幕截圖更好
- 參數:
target(字串,可選):頁面快照中的精確目標元素引用,或唯一的元素選擇器filename(字串,可選):將快照儲存到 markdown 檔案,而非在回應中回傳。depth(數字,可選):限制快照樹的深度boxes(布林值,可選):在快照中包含每個元素的邊界框,格式為 [box=x,y,width,height]。座標相對於視窗,以 CSS 像素為單位(Element.getBoundingClientRect)
- 唯讀:true
- browser_take_screenshot
- 標題:拍攝螢幕截圖
- 描述:拍攝目前頁面的螢幕截圖。您無法根據螢幕截圖執行操作,請使用 browser_snapshot 進行操作。
- 參數:
element(字串,可選):用於取得與元素互動權限的人類可讀元素描述target(字串,可選):頁面快照中的精確目標元素引用,或唯一的元素選擇器type(字串,可選):螢幕截圖的影像格式。如果未設定,則從檔案副檔名推斷,否則為 png。filename(字串,可選):要將螢幕截圖儲存到的檔案名稱。如果未指定,預設為page-{timestamp}.{png|jpeg|webp}。建議使用相對檔案名稱以保持在輸出目錄內。fullPage(布林值,可選):當為 true 時,拍攝完整可捲動頁面的螢幕截圖,而非目前可見的視窗。不能與元素螢幕截圖一起使用。scale(字串):影像解析度比例。「css」產生以 CSS 像素為大小的螢幕截圖(較小,跨裝置一致)。「device」使用裝置像素產生高解析度螢幕截圖(較大,考量裝置像素比例)。預設為 css。
- 唯讀:true
- browser_type
- 標題:輸入文字
- 描述:在可編輯元素中輸入文字
- 參數:
element(字串,可選):用於取得與元素互動權限的人類可讀元素描述target(字串):頁面快照中的精確目標元素引用,或唯一的元素選擇器text(字串):要在元素中輸入的文字submit(布林值,可選):是否提交輸入的文字(之後按 Enter)slowly(布林值,可選):是否一次輸入一個字元。用於觸發頁面中的按鍵處理器。預設為一次填入整個文字。
- 唯讀:false
- browser_wait_for
- 標題:等待
- 描述:等待文字出現或消失,或等待指定的時間過去
- 參數:
time(數字,可選):等待的時間(秒)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(陣列,可選):以 "Name: Value" 格式新增的標頭removeHeaders(字串,可選):要從請求中移除的標頭名稱,以逗號分隔
- 唯讀:false
- browser_route_list
- 標題:列出網路路由
- 描述:列出所有啟用的網路路由
- 參數:無
- 唯讀:true
- browser_unroute
- 標題:移除網路路由
- 描述:移除符合模式的路由(若未指定模式,則移除所有路由)
- 參數:
pattern(字串,可選):要取消路由的 URL 模式(省略以移除所有路由)
- 唯讀:false
儲存(透過 --caps=storage 選擇啟用)
- browser_cookie_clear
- 標題:清除 Cookies
- 描述:清除所有 Cookies
- 參數:無
- 唯讀:false
- browser_cookie_delete
- 標題:刪除 Cookie
- 描述:刪除特定的 Cookie
- 參數:
name(字串):要刪除的 Cookie 名稱
- 唯讀:false
- browser_cookie_get
- 標題:取得 Cookie
- 描述:依名稱取得特定的 Cookie
- 參數:
name(字串):要取得的 Cookie 名稱
- 唯讀:true
- browser_cookie_list
- 標題:列出 Cookies
- 描述:列出所有 Cookies(可依網域/路徑篩選)
- 參數:
domain(字串,可選):依網域篩選 Cookiespath(字串,可選):依路徑篩選 Cookies
- 唯讀:true
- browser_cookie_set
- 標題:設定 Cookie
- 描述:設定帶有可選旗標的 Cookie(網域、路徑、過期時間、httpOnly、secure、sameSite)
- 參數:
name(字串):Cookie 名稱value(字串):Cookie 值domain(字串,可選):Cookie 網域path(字串,可選):Cookie 路徑expires(數字,可選):Cookie 過期時間(Unix 時間戳記)httpOnly(布林值,可選):Cookie 是否僅限 HTTPsecure(布林值,可選):Cookie 是否安全sameSite(字串,可選):Cookie 的 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
- 標題:恢復儲存狀態
- 描述:從檔案恢復儲存狀態(Cookies、localStorage)。這會在恢復前清除現有的 Cookies 和 localStorage。
- 參數:
filename(字串):要從中恢復的儲存狀態檔案路徑
- 唯讀:false
- browser_storage_state
- 標題:儲存儲存狀態
- 描述:將儲存狀態(Cookies、localStorage)儲存到檔案以供日後重用
- 參數:
filename(字串,可選):儲存儲存狀態的檔案名稱。若未指定,預設為storage-state-{timestamp}.json。
- 唯讀:true
DevTools(透過 --caps=devtools 選擇啟用)
- browser_annotate
- 標題:註解目前頁面
- 描述:以註解模式為目前頁面開啟 Playwright Dashboard,並等待使用者繪製註解。傳回已註解的螢幕截圖、ARIA 快照和註解清單。
- 參數:無
- 唯讀:true
- browser_hide_highlight
- 標題:隱藏元素高亮
- 描述:移除先前為元素新增的高亮覆蓋層。
- 參數:
element(字串,可選):新增高亮時使用的可讀元素描述;必須與傳遞給 browser_highlight 的值相符。target(字串,可選):頁面快照中的確切目標元素參考,或唯一的元素選擇器
- 唯讀:true
- browser_highlight
- 標題:高亮元素
- 描述:在頁面上元素周圍顯示持續的高亮覆蓋層。
- 參數:
element(字串,可選):用於取得與元素互動權限的可讀元素描述target(字串):頁面快照中的確切目標元素參考,或唯一的元素選擇器style(字串,可選):套用於高亮覆蓋層的額外內聯 CSS,例如 "outline: 2px dashed red"。
- 唯讀:true
- browser_resume
- 標題:恢復暫停的腳本執行
- 描述:在腳本執行暫停後恢復執行。當 step 設定為 true 時,執行會在下一個動作前再次暫停。
- 參數:
step(布林值,可選):當為 true 時,執行會在下一個動作前再次暫停,允許逐步除錯。location(字串,可選):在特定的 : 暫停執行,例如 "example.spec.ts:42"。
- 唯讀:false
- browser_start_recording
- 標題:開始錄製使用者動作
- 描述:開始將使用者在瀏覽器中執行的動作錄製為 Playwright 程式碼。當使用者想要手動示範流程時使用。當使用者表示完成時,呼叫 browser_stop_recording 以取得錄製的動作。
- 參數:無
- 唯讀:true
- browser_start_tracing
- 標題:開始追蹤
- 描述:開始錄製追蹤
- 參數:無
- 唯讀:true
- browser_start_video
- 標題:開始錄影
- 描述:開始錄製影片
- 參數:
filename(字串,可選):儲存影片的檔案名稱。size(物件,可選):影片尺寸
- 唯讀:true
- browser_stop_recording
- 標題:停止錄製使用者動作
- 描述:停止使用 browser_start_recording 開始的錄製,並將錄製的動作以 Playwright 程式碼傳回。
- 參數:無
- 唯讀:true
- browser_stop_tracing
- 標題:停止追蹤
- 描述:停止錄製追蹤
- 參數:無
- 唯讀:true
- browser_stop_video
- 標題:停止錄影
- 描述:停止錄製影片
- 參數:無
- 唯讀:true
- browser_video_chapter
- 標題:影片章節
- 描述:為影片錄製新增章節標記。顯示帶有模糊背景的全螢幕章節卡片。
- 參數:
title(字串):章節標題description(字串,可選):章節描述duration(數字,可選):顯示章節卡片的持續時間(毫秒)
- 唯讀:true
- browser_video_hide_actions
- 標題:隱藏動作覆蓋層
- 描述:停止在頁面上註解執行的動作。
- 參數:無
- 唯讀:true
- browser_video_show_actions
- 標題:顯示操作覆蓋層
- 描述:在頁面上執行的後續操作上,以標註方式標示操作名稱並高亮目標元素。在錄影或螢幕錄製時很有用。
- 參數:
duration(數字,選用):每個操作標註在畫面上停留的時間,單位為毫秒。預設值為 500。position(字串,選用):操作標題相對於頁面的放置位置。預設為右上角。cursor(字串,選用):指標操作的游標裝飾。"pointer"(預設)會將滑鼠指標從上一個操作點動畫移動到下一個操作點;"none" 則停用游標裝飾。
- 唯讀:true
座標式(透過 --caps=vision 選擇啟用)
- browser_mouse_click_xy
- 標題:點擊
- 描述:在指定位置點擊滑鼠按鈕
- 參數:
x(數字):X 座標y(數字):Y 座標button(字串,選用):要點擊的按鈕,預設為左鍵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(數字):X 座標y(數字):Y 座標
- 唯讀:false
- browser_mouse_up
- 標題:放開滑鼠
- 描述:放開滑鼠
- 參數:
button(字串,選用):要放開的按鈕,預設為左鍵
- 唯讀:false
- browser_mouse_wheel
- 標題:滾動滑鼠滾輪
- 描述:滾動滑鼠滾輪
- 參數:
deltaX(數字):X 軸增量deltaY(數字):Y 軸增量
- 唯讀:false
PDF 產生(透過 --caps=pdf 選擇啟用)
- browser_pdf_save
- 標題:另存為 PDF
- 描述:將頁面另存為 PDF
- 參數:
filename(字串,選用):儲存 PDF 的檔案名稱。若未指定,預設為page-{timestamp}.pdf。建議使用相對檔案名稱,以保持在輸出目錄內。
- 唯讀:true
測試斷言(透過 --caps=testing 選擇啟用)
- browser_generate_locator
- 標題:為元素建立定位器
- 描述:為指定元素產生定位器,供測試使用
- 參數:
element(字串,選用):用於取得與元素互動權限的人類可讀元素描述target(字串):頁面快照中的精確目標元素參照,或唯一的元素選擇器
- 唯讀:true
- browser_verify_element_visible
- 標題:驗證元素可見
- 描述:驗證元素在頁面上可見
- 參數:
role(字串):元素的 ROLE。可在快照中以此格式找到:- {ROLE} "Accessible Name":accessibleName(字串):元素的 ACCESSIBLE_NAME。可在快照中以此格式找到:- role "{ACCESSIBLE_NAME}"
- 唯讀:false
- browser_verify_list_visible
- 標題:驗證清單可見
- 描述:驗證清單在頁面上可見
- 參數:
element(字串):人類可讀的清單描述target(字串):指向清單的精確目標元素參照items(陣列):要驗證的項目
- 唯讀:false
- browser_verify_text_visible
- 標題:驗證文字可見
- 描述:驗證文字在頁面上可見。若可能,建議優先使用 browser_verify_element_visible。
- 參數:
text(字串):要驗證的 TEXT。可在快照中以此格式找到:- role "Accessible Name": {TEXT}或以此格式:- text: {TEXT}
- 唯讀:false
- browser_verify_value
- 標題:驗證值
- 描述:驗證元素值
- 參數:
type(字串):元素類型element(字串):人類可讀的元素描述target(字串):頁面快照中的精確目標元素參照value(字串):要驗證的值。若是核取方塊,請使用 "true" 或 "false"。
- 唯讀:false