Playwright MCP
официальныйОфициальный MCP-сервер Playwright для автоматизации браузера, инспекции страниц, создания скриншотов и веб-взаимодействия из Claude, Cursor и других AI-агентов.
Что можно делать с Playwright MCP?
- Автоматизация браузера через accessibility-снимки — Попросите вашего ИИ перемещаться по страницам и взаимодействовать с элементами, используя структурированные данные доступности, без необходимости в скриншотах.
- Постоянные сеансы браузера — Сохраняйте состояние входа в систему между разговорами с помощью постоянного профиля или используйте изолированные сеансы для чистого тестирования.
- Поддержка нескольких браузеров — Автоматизируйте задачи в Chromium, Firefox или WebKit с возможностями headless-режима и эмуляции устройств.
- Настраиваемая конфигурация браузера — Настройте размер окна просмотра, user agent, параметры прокси и разрешения в соответствии с вашими потребностями тестирования.
- Интеграция с расширениями браузера — Подключайтесь к вашему существующему браузеру Chrome или Edge, чтобы использовать текущие вкладки и сеансы с входом в систему.
Документация
Playwright MCP
Сервер Model Context Protocol (MCP), который предоставляет возможности автоматизации браузера с помощью Playwright. Этот сервер позволяет LLM взаимодействовать с веб-страницами через структурированные снимки доступности, обходя необходимость в скриншотах или моделях, настроенных на визуальное восприятие.
Playwright MCP против Playwright CLI
Этот пакет предоставляет MCP-интерфейс для Playwright. Если вы используете кодирующий агент, вам может быть полезнее использовать CLI+SKILLS.
-
CLI: Современные кодирующие агенты все чаще отдают предпочтение CLI-ориентированным рабочим процессам, представленным как SKILLS, вместо MCP, потому что вызовы CLI более эффективны по токенам: они избегают загрузки больших схем инструментов и подробных деревьев доступности в контекст модели, позволяя агентам действовать через краткие, целенаправленные команды. Это делает CLI + SKILLs более подходящими для высокопроизводительных кодирующих агентов, которым необходимо балансировать автоматизацию браузера с большими кодовыми базами, тестами и рассуждениями в ограниченных контекстных окнах.
Узнайте больше о Playwright CLI с SKILLS. -
MCP: MCP остается актуальным для специализированных агентных циклов, которые выигрывают от постоянного состояния, богатой интроспекции и итеративного рассуждения над структурой страницы, таких как исследовательская автоматизация, самовосстанавливающиеся тесты или длительные автономные рабочие процессы, где поддержание непрерывного контекста браузера перевешивает затраты на токены.
Ключевые особенности
- Быстрый и легковесный. Использует дерево доступности Playwright, а не ввод на основе пикселей.
- Дружелюбен к LLM. Не требуются модели зрения, работает исключительно на структурированных данных.
- Детерминированное применение инструментов. Избегает неоднозначности, характерной для подходов на основе скриншотов.
Требования
- Node.js 18 или новее
- VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie или любой другой MCP-клиент
Начало работы
Сначала установите сервер Playwright MCP с вашим клиентом.
Стандартная конфигурация работает в большинстве инструментов:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Amp
Добавьте через экран настроек расширения Amp VS Code или обновив файл settings.json:
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
Настройка Amp CLI:
Добавьте с помощью команды amp mcp add ниже
amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity
Добавьте через настройки Antigravity или обновив файл конфигурации:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Claude Code
Используйте CLI Claude Code, чтобы добавить сервер Playwright MCP:
claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop
Следуйте руководству по установке MCP, используйте стандартную конфигурацию выше.
Cline
Следуйте инструкциям в разделе Настройка MCP-серверов
Пример: Локальная настройка
Добавьте следующее в ваш файл cline_mcp_settings.json:
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}
Codex
Используйте CLI Codex, чтобы добавить сервер 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
Используйте CLI Copilot для интерактивного добавления сервера 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
Используйте CLI Factory, чтобы добавить сервер Playwright MCP:
droid mcp add playwright "npx @playwright/mcp@latest"
В качестве альтернативы введите /mcp в Factory droid, чтобы открыть интерактивный интерфейс для управления MCP-серверами.
Для получения дополнительной информации см. документацию Factory MCP.
Gemini CLI
Следуйте руководству по установке MCP, используйте стандартную конфигурацию выше.
Goose
Нажмите кнопку для установки:
Или установите вручную:
Перейдите в Advanced settings -> Extensions -> Add custom extension. Дайте имя по своему усмотрению, используйте тип STDIO и установите command на npx @playwright/mcp. Нажмите «Add Extension».
Grok
Используйте CLI Grok, чтобы добавить сервер Playwright MCP:
grok mcp add playwright -- npx @playwright/mcp@latest
В качестве альтернативы создайте или отредактируйте файл конфигурации ~/.grok/config.toml и добавьте:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Для получения дополнительной информации см. документацию Grok MCP.
Junie
Чтобы добавить сервер Playwright MCP в Junie CLI:
- Введите
/mcp - Нажмите
Ctrl+A, чтобы добавить новый MCP-сервер - Выберите Playwright из списка
В качестве альтернативы добавьте в .junie/mcp/mcp.json:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
Для получения дополнительной информации см. документацию по конфигурации Junie MCP.
Kiro
Следуйте документации по MCP-серверам. Например, в .kiro/settings/mcp.json:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
LM Studio
Нажмите кнопку для установки:
Или установите вручную:
Перейдите в Program на правой боковой панели -> Install -> Edit mcp.json. Используйте стандартную конфигурацию выше.
opencode
Следуйте документации по MCP-серверам. Например, в ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
Qodo Gen
Откройте панель чата Qodo Gen в VSCode или IntelliJ → Connect more tools → + Add new MCP → Вставьте стандартную конфигурацию выше.
Нажмите Save.
VS Code
Нажмите кнопку для установки:
Или установите вручную:
Следуйте руководству по установке MCP, используйте стандартную конфигурацию выше. Вы также можете установить сервер Playwright MCP с помощью CLI VS Code:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
После установки сервер Playwright MCP будет доступен для использования с вашим агентом GitHub Copilot в VS Code.
Warp
Перейдите в Settings -> AI -> Manage MCP Servers -> + Add, чтобы добавить MCP-сервер. Используйте стандартную конфигурацию выше.
В качестве альтернативы используйте слэш-команду /add-mcp в приглашении Warp и вставьте стандартную конфигурацию выше:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Windsurf
Следуйте документации Windsurf MCP. Используйте стандартную конфигурацию выше.
Конфигурация
Сервер Playwright MCP поддерживает следующие аргументы. Их можно указать в JSON-конфигурации выше, как часть списка "args":
| Параметр | Описание |
|---|---|
| --allowed-hosts <hosts...> | список хостов через запятую, которым этот сервер может обслуживать запросы. По умолчанию — хост, к которому привязан сервер. Передайте '*' для отключения проверки хоста. env PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | список доверенных источников (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 | блокировать сервис-воркеры 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 | эмулировать универсальное мобильное устройство (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 |
| --file-paths | как пути к файлам отображаются в результатах инструментов: "relative" относительно корня рабочей области или "absolute". По умолчанию — "relative". env PLAYWRIGHT_MCP_FILE_PATHS |
| --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 |
| --idle-timeout | закрыть браузер через это количество миллисекунд без завершенного вызова инструмента; следующий вызов инструмента перезапустит его. По умолчанию — один час для безголовых браузеров, никогда для браузеров с графическим интерфейсом, 0 отключает. env PLAYWRIGHT_MCP_IDLE_TIMEOUT |
| --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" или "only". При значении "only" ответ, содержащий изображение, состоит только из частей изображения, без текстовой части. По умолчанию — "allow". env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | отключить песочницу для всех типов процессов, которые обычно изолированы. env PLAYWRIGHT_MCP_NO_SANDBOX |
| --no-webmcp | не собирать и не раскрывать инструменты, которые страница регистрирует через WebMCP API. env PLAYWRIGHT_MCP_WEBMCP=false |
| --output-dir | путь к каталогу для автоматически именованных выходных файлов, например, для скриншота, сделанного без явного имени файла. Файлы с явным именем разрешаются относительно корня рабочей области и не затрагиваются этой опцией. env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | Порог для удаления старых выходных файлов, в байтах. env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --port | порт для прослушивания SSE-транспорта. env PLAYWRIGHT_MCP_PORT |
| --profile-dir-name | имя каталога профиля в каталоге пользовательских данных для подключения с помощью --extension, например "Profile 1". По умолчанию — последний использованный профиль с установленным расширением. env PLAYWRIGHT_MCP_PROFILE_DIR_NAME |
| --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 | укажите атрибут для тестовых идентификаторов, по умолчанию — "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 | укажите строку пользовательского агента env PLAYWRIGHT_MCP_USER_AGENT |
| --user-data-dir | путь к каталогу пользовательских данных. Если не указан, будет создан временный каталог. env PLAYWRIGHT_MCP_USER_DATA_DIR |
| --viewport-size | укажите размер области просмотра браузера в пикселях, например "1280x720" env PLAYWRIGHT_MCP_VIEWPORT_SIZE |
Профиль пользователя
Вы можете запускать Playwright MCP с постоянным профилем, как обычный браузер (по умолчанию), в изолированных контекстах для тестовых сессий или подключаться к существующему браузеру с помощью расширения браузера.
Постоянный профиль
Вся информация о входе в систему будет храниться в постоянном профиле. Вы можете удалить его между сессиями, если хотите очистить автономное состояние.
Постоянный профиль находится в следующих местах, и вы можете переопределить его с помощью аргумента --user-data-dir.
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}
{workspace-hash} определяется из корня рабочей области MCP-клиента, поэтому разные проекты автоматически получают отдельные профили.
[!IMPORTANT] Постоянный профиль может использоваться только одним экземпляром браузера одновременно, поэтому параллельные MCP-клиенты, использующие одну рабочую область, будут конфликтовать. Чтобы запустить несколько клиентов параллельно, запустите каждый дополнительный клиент с
--isolatedили укажите для него отдельный--user-data-dir.
Изолированный
В изолированном режиме каждая сессия запускается в изолированном профиле. Каждый раз, когда вы просите MCP закрыть браузер,
сессия закрывается, и все состояние хранилища для этой сессии теряется. Вы можете предоставить начальное состояние хранилища
браузеру через contextOptions в конфигурации или через аргумент --storage-state. Узнайте больше о состоянии
хранилища здесь.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}
Расширение браузера
Расширение Playwright MCP Chrome Extension позволяет подключаться к существующим вкладкам браузера и использовать ваши сессии с входом в систему и состояние браузера. См. microsoft/playwright › packages/extension для инструкций по установке и настройке.
Начальное состояние
Существует несколько способов предоставить начальное состояние контексту браузера или странице.
Для состояния хранилища вы можете:
- Начать с каталога пользовательских данных, используя аргумент
--user-data-dir. Это сохранит все данные браузера между сессиями. - Начать с файла состояния хранилища, используя аргумент
--storage-state. Это загрузит файлы 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;
/**
* Whether to collect and expose the tools that a page registers through the
* experimental WebMCP API. Enabled by default.
*/
webmcp?: 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 for automatically named output files, for example a screenshot taken without an
* explicit file name. Files with an explicit name are resolved against the workspace root instead
* and are not affected by this option.
*/
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;
/**
* Close the browser after this many milliseconds without a tool call, and relaunch it on the next one.
* Defaults to one hour for headless browsers Playwright launched, and to no timeout for headed or attached ones. Pass 0 to disable.
* The CLI shuts the whole session down instead of relaunching.
*/
idle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "only". Defaults to "allow".
* With "only", a response that carries an image consists of the image parts alone, without the text part.
*/
imageResponses?: 'allow' | 'omit' | 'only';
/**
* How file paths are rendered in tool results. Can be "relative" to the workspace root or "absolute". Defaults to "relative".
*/
filePaths?: 'relative' | 'absolute';
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 в настоящее время поддерживает только headless 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_emulate_media
- Название: Эмулировать медиафункции
- Описание: Эмулировать CSS-медиафункции для страницы, например, переключаться между светлой и темной цветовой схемой. Опущенные параметры остаются без изменений; null очищает переопределение.
- Параметры:
colorScheme(необязательно): Эмулирует медиафункцию prefers-color-schemereducedMotion(необязательно): Эмулирует медиафункцию prefers-reduced-motionforcedColors(необязательно): Эмулирует медиафункцию forced-colorscontrast(необязательно): Эмулирует медиафункцию prefers-contrastmedia(необязательно): Изменяет CSS-тип мультимедиа страницы
- Только чтение: false
- browser_evaluate
- Название: Выполнить JavaScript
- Описание: Выполнить JavaScript-выражение на странице или элементе
- Параметры:
element(строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементомtarget(строка, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элементаfunction(строка): () => { /* код / } или (element) => { / код */ }, если указан элементfilename(строка, необязательно): Имя файла для сохранения результата. Относительные имена файлов разрешаются относительно корня рабочей области. Если не указано, результат возвращается в виде текста.
- Только чтение: false
- browser_file_upload
- Название: Загрузить файлы
- Описание: Загрузить один или несколько файлов
- Параметры:
paths(массив, необязательно): Абсолютные пути к файлам для загрузки. Может быть один файл или несколько файлов. Если не указано, выбор файла отменяется.
- Только чтение: false
- browser_fill_form
- Название: Заполнить форму
- Описание: Заполнить несколько полей формы
- Параметры:
fields(массив): Поля для заполнения
- Только чтение: false
- browser_find
- Название: Найти в снимке страницы
- Описание: Поиск в снимке специальных возможностей текущей страницы по тексту или регулярному выражению. Возвращает соответствующие узлы снимка с несколькими строками окружающего контекста (как фрагменты поиска), каждый показан под своим путем от корня дерева, что дешевле, чем захват всего снимка, когда вам нужно только найти элемент и его ссылку.
- Параметры:
text(строка, необязательно): Обычный текст для поиска в снимке страницы (поиск подстроки без учета регистра). Укажите либо текст, либо регулярное выражение, но не оба.regex(строка, необязательно): Регулярное выражение для поиска в снимке страницы. По умолчанию поиск чувствителен к регистру; заключите шаблон в косые черты, чтобы добавить флаги, например, "/error/i" для поиска без учета регистра. Укажите либо текст, либо регулярное выражение, но не оба.filename(строка, необязательно): Сохранить результаты в файл вместо возврата в ответе. Относительные имена файлов разрешаются относительно корня рабочей области.
- Только чтение: 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. Небезопасно: выполняет произвольный 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
- Title: Снимок страницы
- Description: Создать снимок доступности текущей страницы; это лучше, чем скриншот
- Parameters:
target(string, optional): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элементаfilename(string, optional): Сохранить снимок в файл вместо возврата в ответе. Относительные имена файлов разрешаются относительно корня рабочей области.depth(number, optional): Ограничить глубину дерева снимкаboxes(boolean, optional): Включить ограничивающую рамку каждого элемента как [box=x,y,width,height] в снимке. Координаты относительно области просмотра, в CSS-пикселях (Element.getBoundingClientRect)
- Read-only: true
- browser_take_screenshot
- Title: Сделать скриншот
- Description: Сделать скриншот текущей страницы. Нельзя выполнять действия на основе скриншота; используйте browser_snapshot для действий.
- Parameters:
element(string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементомtarget(string, optional): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элементаtype(string, optional): Формат изображения для скриншота. Если не задан, определяется по расширению имени файла, иначе png.filename(string, optional): Имя файла для сохранения скриншота. Относительные имена файлов разрешаются относительно корня рабочей области. Если не указано, скриншот сохраняется в выходной каталог какpage-{timestamp}.{png|jpeg|webp}.fullPage(boolean, optional): Если true, делает скриншот всей прокручиваемой страницы вместо текущей видимой области. Нельзя использовать со скриншотами элементов.scale(string): Масштаб разрешения изображения. "css" создает скриншот размером в CSS-пикселях (меньше, согласованно на разных устройствах). "device" создает скриншот высокого разрешения с использованием пикселей устройства (больше, учитывает коэффициент пикселей устройства). По умолчанию css.
- Read-only: true
- browser_type
- Title: Ввести текст
- Description: Ввести текст в редактируемый элемент
- Parameters:
element(string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементомtarget(string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элементаtext(string): Текст для ввода в элементsubmit(boolean, optional): Отправлять ли введенный текст (нажать Enter после)slowly(boolean, optional): Вводить ли текст по одному символу за раз. Полезно для запуска обработчиков клавиш на странице. По умолчанию весь текст вводится сразу.
- Read-only: false
- browser_wait_for
- Title: Ожидание
- Description: Ожидать появления или исчезновения текста или истечения указанного времени
- Parameters:
time(number, optional): Время ожидания в секундах, максимум 30text(string, optional): Текст, который нужно ожидатьtextGone(string, optional): Текст, исчезновения которого нужно ожидать
- Read-only: false
Управление вкладками
- browser_tabs
- Title: Управление вкладками
- Description: Список, создание, закрытие или выбор вкладки браузера.
- Parameters:
action(string): Операция для выполненияindex(number, optional): Индекс вкладки, используется для close/select. Если опущен для close, закрывается текущая вкладка.url(string, optional): URL для перехода в новой вкладке, используется для new.
- Read-only: false
Установка браузера
Конфигурация (опционально через --caps=config)
- browser_get_config
- Title: Получить конфигурацию
- Description: Получить итоговую разрешенную конфигурацию после объединения параметров CLI, переменных окружения и файла конфигурации.
- Parameters: Нет
- Read-only: true
Сеть (опционально через --caps=network)
- browser_network_state_set
- Title: Установить состояние сети
- Description: Устанавливает состояние сети браузера в онлайн или офлайн. В офлайн-режиме все сетевые запросы будут завершаться ошибкой.
- Parameters:
state(string): Установите "offline" для имитации офлайн-режима, "online" для восстановления сетевого подключения
- Read-only: false
- browser_route
- Title: Мокировать сетевые запросы
- Description: Настроить маршрут для мокирования сетевых запросов, соответствующих шаблону URL
- Parameters:
pattern(string): Шаблон URL для сопоставления (например, "/api/users", "/*.{png,jpg}")status(number, optional): Код состояния HTTP для возврата (по умолчанию: 200)body(string, optional): Тело ответа (текст или JSON-строка)contentType(string, optional): Заголовок Content-Type (например, "application/json", "text/html")headers(array, optional): Заголовки для добавления в формате "Name: Value"removeHeaders(string, optional): Список имен заголовков через запятую для удаления из запроса
- Read-only: false
- browser_route_list
- Title: Список сетевых маршрутов
- Description: Список всех активных сетевых маршрутов
- Parameters: Нет
- Read-only: true
- browser_unroute
- Title: Удалить сетевые маршруты
- Description: Удалить сетевые маршруты, соответствующие шаблону (или все маршруты, если шаблон не указан)
- Parameters:
pattern(string, optional): Шаблон URL для удаления маршрута (опустите, чтобы удалить все маршруты)
- Read-only: false
Хранилище (опционально через --caps=storage)
- browser_cookie_clear
- Title: Очистить куки
- Description: Очистить все куки
- Parameters: Нет
- Read-only: false
- browser_cookie_delete
- Title: Удалить куки
- Description: Удалить конкретный куки
- Parameters:
name(string): Имя куки для удаления
- Read-only: false
- browser_cookie_get
- Title: Получить куки
- Description: Получить конкретный куки по имени
- Parameters:
name(string): Имя куки для получения
- Read-only: true
- browser_cookie_list
- Title: Список куки
- Description: Список всех куки (опционально отфильтрованных по домену/пути)
- Parameters:
domain(string, optional): Фильтровать куки по доменуpath(string, optional): Фильтровать куки по пути
- Read-only: true
- browser_cookie_set
- Title: Установить куки
- Description: Установить куки с необязательными флагами (domain, path, expires, httpOnly, secure, sameSite)
- Parameters:
name(string): Имя кукиvalue(string): Значение кукиdomain(string, optional): Домен кукиpath(string, optional): Путь кукиexpires(number, optional): Срок действия куки как Unix-временная меткаhttpOnly(boolean, optional): Является ли куки HTTP-onlysecure(boolean, optional): Является ли куки защищеннымsameSite(string, optional): Атрибут SameSite куки
- Read-only: false
- browser_localstorage_clear
- Title: Очистить localStorage
- Description: Очистить весь localStorage
- Parameters: Нет
- Read-only: false
- browser_localstorage_delete
- Title: Удалить элемент localStorage
- Description: Удалить элемент localStorage
- Parameters:
key(string): Ключ для удаления
- Read-only: false
- browser_localstorage_get
- Title: Получить элемент localStorage
- Description: Получить элемент localStorage по ключу
- Parameters:
key(string): Ключ для получения
- Read-only: true
- browser_localstorage_list
- Title: Список localStorage
- Description: Список всех пар ключ-значение localStorage
- Parameters: Нет
- Read-only: true
- browser_localstorage_set
- Title: Установить элемент localStorage
- Description: Установить элемент localStorage
- Parameters:
key(string): Ключ для установкиvalue(string): Значение для установки
- Read-only: false
- browser_sessionstorage_clear
- Title: Очистить sessionStorage
- Description: Очистить весь sessionStorage
- Parameters: Нет
- Read-only: false
- browser_sessionstorage_delete
- Title: Удалить элемент sessionStorage
- Description: Удалить элемент sessionStorage
- Parameters:
key(string): Ключ для удаления
- Read-only: false
- browser_sessionstorage_get
- Title: Получить элемент sessionStorage
- Description: Получить элемент sessionStorage по ключу
- Parameters:
key(string): Ключ для получения
- Read-only: true
- browser_sessionstorage_list
- Title: Список sessionStorage
- Description: Список всех пар ключ-значение sessionStorage
- Parameters: Нет
- Read-only: true
- browser_sessionstorage_set
- Title: Установить элемент sessionStorage
- Description: Установить элемент sessionStorage
- Parameters:
key(string): Ключ для установкиvalue(string): Значение для установки
- Read-only: false
- browser_set_storage_state
- Title: Восстановить состояние хранилища
- Description: Восстановить состояние хранилища (куки, локальное хранилище) из файла. Это очищает существующие куки и локальное хранилище перед восстановлением.
- Parameters:
filename(string): Путь к файлу состояния хранилища для восстановления. Относительные имена файлов разрешаются относительно корня рабочей области.
- Read-only: false
- browser_storage_state
- Title: Сохранить состояние хранилища
- Description: Сохранить состояние хранилища (куки, локальное хранилище) в файл для последующего повторного использования
- Parameters:
filename(string, optional): Имя файла для сохранения состояния хранилища. Относительные имена файлов разрешаются относительно корня рабочей области. Если не указано, состояние хранилища сохраняется в выходной каталог какstorage-state-{timestamp}.json.
- Read-only: true
DevTools (опционально через --caps=devtools)
- browser_annotate
- Title: Аннотировать текущую страницу
- Description: Открыть Playwright Dashboard в режиме аннотации для текущей страницы и ожидать, пока пользователь нарисует аннотации. Возвращает аннотированный скриншот, ARIA-снимок и список аннотаций.
- Parameters: Нет
- Read-only: true
- browser_hide_highlight
- Title: Скрыть подсветку элемента
- Description: Удалить оверлей подсветки, ранее добавленный для элемента.
- Parameters:
element(string, optional): Понятное человеку описание элемента, используемое при добавлении подсветки; должно совпадать со значением, переданным в browser_highlight.target(string, optional): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
- Read-only: 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(строка, необязательно): Имя файла для сохранения видео. Относительные имена файлов разрешаются относительно корня рабочей области. Если не указано, видео сохраняется в выходной каталог какvideo-{timestamp}.webm.size(объект, необязательно): Размер видеоfps(число, необязательно): Частота кадров видео в кадрах в секунду, по умолчанию 25cursor(логический, необязательно): Отображать анимированный курсор мыши, который перемещается к каждой точке действия. Замедляет действия на 800 мс, чтобы курсор успевал перемещаться.
- Только для чтения: 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" отключает оформление курсора.style(объект, необязательно): Стили оформления действий.
- Только для чтения: true
На основе координат (опционально через --caps=vision)
- browser_mouse_click_xy
- Название: Клик
- Описание: Нажать кнопку мыши в заданной позиции
- Параметры:
x(число): Координата Xy(число): Координата Ybutton(строка, необязательно): Кнопка для нажатия, по умолчанию леваяclickCount(число, необязательно): Количество кликов, по умолчанию 1delay(число, необязательно): Время ожидания между нажатием и отпусканием кнопки мыши в миллисекундах, по умолчанию 0
- Только для чтения: false
- browser_mouse_down
- Название: Нажать кнопку мыши
- Описание: Нажать кнопку мыши
- Параметры:
button(строка, необязательно): Кнопка для нажатия, по умолчанию левая
- Только для чтения: false
- browser_mouse_drag_xy
- Название: Перетащить мышь
- Описание: Перетащить левую кнопку мыши в заданную позицию
- Параметры:
startX(число): Начальная координата XstartY(число): Начальная координата YendX(число): Конечная координата XendY(число): Конечная координата Y
- Только для чтения: false
- browser_mouse_move_xy
- Название: Переместить мышь
- Описание: Переместить мышь в заданную позицию
- Параметры:
x(число): Координата Xy(число): Координата Y
- Только для чтения: false
- browser_mouse_up
- Название: Отпустить кнопку мыши
- Описание: Отпустить кнопку мыши
- Параметры:
button(строка, необязательно): Кнопка для отпускания, по умолчанию левая
- Только для чтения: false
- browser_mouse_wheel
- Название: Прокрутить колесо мыши
- Описание: Прокрутить колесо мыши
- Параметры:
deltaX(число): Дельта XdeltaY(число): Дельта Y
- Только для чтения: false
Генерация PDF (опционально через --caps=pdf)
- browser_pdf_save
- Название: Сохранить как PDF
- Описание: Сохранить страницу как PDF
- Параметры:
filename(строка, необязательно): Имя файла для сохранения PDF. Относительные имена файлов разрешаются относительно корня рабочей области. Если не указано, PDF сохраняется в выходной каталог какpage-{timestamp}.pdf.
- Только для чтения: true
Проверки тестов (опционально через --caps=testing)
- browser_generate_locator
- Название: Создать локатор для элемента
- Описание: Сгенерировать локатор для указанного элемента для использования в тестах
- Параметры:
element(строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементомtarget(строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
- Только для чтения: true
- browser_verify_element_visible
- Название: Проверить видимость элемента
- Описание: Проверить, что элемент виден на странице
- Параметры:
role(строка): РОЛЬ элемента. Можно найти в снимке следующим образом:- {ROLE} "Accessible Name":accessibleName(строка): ДОСТУПНОЕ_ИМЯ элемента. Можно найти в снимке следующим образом:- role "{ACCESSIBLE_NAME}"
- Только для чтения: false
- browser_verify_list_visible
- Название: Проверить видимость списка
- Описание: Проверить, что список виден на странице
- Параметры:
element(строка): Понятное человеку описание спискаtarget(строка): Точная ссылка на целевой элемент, указывающая на списокitems(массив): Элементы для проверки
- Только для чтения: false
- browser_verify_text_visible
- Название: Проверить видимость текста
- Описание: Проверить, что текст виден на странице. По возможности предпочтительнее использовать browser_verify_element_visible.
- Параметры:
text(строка): ТЕКСТ для проверки. Можно найти в снимке следующим образом:- role "Accessible Name": {TEXT}или так:- text: {TEXT}
- Только для чтения: false
- browser_verify_value
- Название: Проверить значение
- Описание: Проверить значение элемента
- Параметры:
type(строка): Тип элементаelement(строка): Понятное человеку описание элементаtarget(строка): Точная ссылка на целевой элемент из снимка страницыvalue(строка): Значение для проверки. Для флажка используйте "true" или "false".
- Только для чтения: false