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"
      ]
    }
  }
}

Install in VS Code Install in VS Code Insiders

Amp

透過 Amp VS Code 擴充功能設定畫面或更新您的 settings.json 檔案來新增:

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

Amp CLI 設定:

透過下方的 amp mcp add 命令新增

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

透過 Antigravity 設定或更新您的設定檔來新增:

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

使用 Claude Code CLI 新增 Playwright MCP 伺服器:

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

依照 MCP 安裝指南,使用上述標準設定。

Cline

依照 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

點擊按鈕安裝:

Install in Cursor

或手動安裝:

前往 Cursor Settings -> MCP -> Add new MCP Server。隨意命名,使用 command 類型搭配命令 npx @playwright/mcp@latest。您也可以透過點擊 Edit 來驗證設定或新增命令參數。

Factory

使用 Factory CLI 新增 Playwright MCP 伺服器:

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

或者,在 Factory droid 中輸入 /mcp 以開啟管理 MCP 伺服器的互動式 UI。

如需更多資訊,請參閱 Factory MCP 文件

Gemini CLI

依照 MCP 安裝指南,使用上述標準設定。

Goose

點擊按鈕安裝:

Install in Goose

或手動安裝:

前往 Advanced settings -> Extensions -> Add custom extension。隨意命名,使用 STDIO 類型,並將 command 設定為 npx @playwright/mcp。點擊「Add Extension」。

Grok

使用 Grok CLI 新增 Playwright MCP 伺服器:

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

或者,建立或編輯設定檔 ~/.grok/config.toml 並新增:

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

如需更多資訊,請參閱 Grok MCP 文件

Junie

在 Junie CLI 中新增 Playwright MCP 伺服器:

  1. 輸入 /mcp
  2. 按下 Ctrl+A 以新增 MCP 伺服器
  3. 從清單中選擇 Playwright

或者,新增至 .junie/mcp/mcp.json

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

如需更多資訊,請參閱 Junie MCP 設定文件

Kiro

Add to Kiro

依照 MCP 伺服器文件。例如在 .kiro/settings/mcp.json 中:

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

點擊按鈕安裝:

Add MCP Server playwright to LM Studio

或手動安裝:

前往右側邊欄的 Program -> Install -> Edit mcp.json。使用上述標準設定。

opencode

依照 MCP 伺服器文件。例如在 ~/.config/opencode/opencode.json 中:

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

Qodo Gen

在 VSCode 或 IntelliJ 中開啟 Qodo Gen 聊天面板 → Connect more tools → + Add new MCP → 貼上上述標準設定。

點擊 Save

VS Code

點擊按鈕安裝:

Install in VS Code Install in VS Code Insiders

或手動安裝:

依照 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(字串):要按下的按鍵名稱或要產生的字元,例如 ArrowLefta
    • 唯讀: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(字串,可選):依網域篩選 Cookies
      • path(字串,可選):依路徑篩選 Cookies
    • 唯讀:true
  • browser_cookie_set
    • 標題:設定 Cookie
    • 描述:設定帶有可選旗標的 Cookie(網域、路徑、過期時間、httpOnly、secure、sameSite)
    • 參數:
      • name(字串):Cookie 名稱
      • value(字串):Cookie 值
      • domain(字串,可選):Cookie 網域
      • path(字串,可選):Cookie 路徑
      • expires(數字,可選):Cookie 過期時間(Unix 時間戳記)
      • httpOnly(布林值,可選):Cookie 是否僅限 HTTP
      • secure(布林值,可選):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(數字,選用):點擊次數,預設為 1
      • delay(數字,選用):滑鼠按下與放開之間的等待時間,單位為毫秒,預設為 0
    • 唯讀:false
  • browser_mouse_down
    • 標題:按下滑鼠
    • 描述:按下滑鼠
    • 參數:
      • button(字串,選用):要按下的按鈕,預設為左鍵
    • 唯讀:false
  • browser_mouse_drag_xy
    • 標題:拖曳滑鼠
    • 描述:將左鍵拖曳到指定位置
    • 參數:
      • startX(數字):起始 X 座標
      • startY(數字):起始 Y 座標
      • endX(數字):結束 X 座標
      • endY(數字):結束 Y 座標
    • 唯讀:false
  • browser_mouse_move_xy
    • 標題:移動滑鼠
    • 描述:將滑鼠移動到指定位置
    • 參數:
      • x(數字):X 座標
      • y(數字):Y 座標
    • 唯讀:false
  • browser_mouse_up
    • 標題:放開滑鼠
    • 描述:放開滑鼠
    • 參數:
      • button(字串,選用):要放開的按鈕,預設為左鍵
    • 唯讀:false
  • browser_mouse_wheel
    • 標題:滾動滑鼠滾輪
    • 描述:滾動滑鼠滾輪
    • 參數:
      • deltaX(數字):X 軸增量
      • deltaY(數字):Y 軸增量
    • 唯讀:false
PDF 產生(透過 --caps=pdf 選擇啟用)
  • browser_pdf_save
    • 標題:另存為 PDF
    • 描述:將頁面另存為 PDF
    • 參數:
      • filename(字串,選用):儲存 PDF 的檔案名稱。若未指定,預設為 page-{timestamp}.pdf。建議使用相對檔案名稱,以保持在輸出目錄內。
    • 唯讀:true
測試斷言(透過 --caps=testing 選擇啟用)
  • browser_generate_locator
    • 標題:為元素建立定位器
    • 描述:為指定元素產生定位器,供測試使用
    • 參數:
      • element(字串,選用):用於取得與元素互動權限的人類可讀元素描述
      • target(字串):頁面快照中的精確目標元素參照,或唯一的元素選擇器
    • 唯讀:true
  • browser_verify_element_visible
    • 標題:驗證元素可見
    • 描述:驗證元素在頁面上可見
    • 參數:
      • role(字串):元素的 ROLE。可在快照中以此格式找到:- {ROLE} "Accessible Name":
      • accessibleName(字串):元素的 ACCESSIBLE_NAME。可在快照中以此格式找到:- role "{ACCESSIBLE_NAME}"
    • 唯讀:false
  • browser_verify_list_visible
    • 標題:驗證清單可見
    • 描述:驗證清單在頁面上可見
    • 參數:
      • element(字串):人類可讀的清單描述
      • target(字串):指向清單的精確目標元素參照
      • items(陣列):要驗證的項目
    • 唯讀:false
  • browser_verify_text_visible
    • 標題:驗證文字可見
    • 描述:驗證文字在頁面上可見。若可能,建議優先使用 browser_verify_element_visible。
    • 參數:
      • text(字串):要驗證的 TEXT。可在快照中以此格式找到:- role "Accessible Name": {TEXT} 或以此格式:- text: {TEXT}
    • 唯讀:false
  • browser_verify_value
    • 標題:驗證值
    • 描述:驗證元素值
    • 參數:
      • type(字串):元素類型
      • element(字串):人類可讀的元素描述
      • target(字串):頁面快照中的精確目標元素參照
      • value(字串):要驗證的值。若是核取方塊,請使用 "true" 或 "false"。
    • 唯讀:false