Playwright MCP
официальныйОфициальный MCP-сервер Playwright для автоматизации браузера, инспекции страниц, создания скриншотов и веб-взаимодействия из Claude, Cursor и других AI-агентов.
Что можно делать с Playwright MCP?
- Доступ к дереву доступности — Попросите вашего ИИ перемещаться по страницам и читать структурированные снимки доступности, без необходимости в модели зрения.
- Постоянные сеансы браузера — Сохраняйте состояние входа между разговорами с помощью
--user-data-dirили--storage-stateдля аутентифицированных рабочих процессов. - Мультибраузерная автоматизация — Управляйте Chromium, Firefox, WebKit или Edge с помощью флага
--browserдля кросс-движкового тестирования. - Эмуляция устройств — Имитируйте мобильные устройства, такие как «iPhone 15», через
--deviceили общий режим--mobileдля адаптивного тестирования. - Генерация кода — Создавайте тестовые скрипты Playwright на TypeScript, Python, Java или C# с помощью опции
--codegen. - Изолированные тестовые контексты — Запускайте сеансы с флагом
--isolated, чтобы отбрасывать все состояние после каждого закрытия браузера.
Документация
Playwright MCP
Сервер Model Context Protocol (MCP), предоставляющий возможности автоматизации браузера с помощью Playwright. Этот сервер позволяет LLM взаимодействовать с веб-страницами через структурированные снимки доступности, обходя необходимость в скриншотах или моделях, настроенных на визуальное восприятие.
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 |
| --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...> | путь к TypeScript-файлу для оценки на объекте страницы Playwright env PLAYWRIGHT_MCP_INIT_PAGE |
| --init-script <path...> | путь к JavaScript-файлу для добавления в качестве сценария инициализации. Сценарий будет выполняться на каждой странице перед любыми сценариями страницы. Можно указать несколько раз. env PLAYWRIGHT_MCP_INIT_SCRIPT |
| --isolated | хранить профиль браузера в памяти, не сохранять его на диск. env PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | отправлять ли ответы с изображениями клиенту. Может быть "allow" или "omit", по умолчанию — "allow". env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | отключить песочницу для всех типов процессов, которые обычно изолированы. env PLAYWRIGHT_MCP_NO_SANDBOX |
| --output-dir | путь к каталогу для выходных файлов. env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | порог для удаления старых выходных файлов, в байтах. env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --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 | укажите атрибут для тестовых идентификаторов, по умолчанию — "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;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory to save output files.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
/**
* How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
*/
settle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/
imageResponses?: 'allow' | 'omit';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
/**
* Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
* Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}
Автономный MCP-сервер
При запуске браузера с графическим интерфейсом в системе без дисплея или из рабочих процессов IDE,
запустите MCP-сервер из окружения с DISPLAY и передайте флаг --port для включения HTTP-транспорта.
npx @playwright/mcp@latest --port 8931
Затем в конфигурации MCP-клиента установите url на HTTP-конечную точку:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
Безопасность
Playwright MCP не является границей безопасности. См. Рекомендации по безопасности MCP для получения рекомендаций по защите вашего развертывания.
Docker
ПРИМЕЧАНИЕ: Реализация Docker в настоящее время поддерживает только безголовый Chromium.
{
"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(строка): () => { /* код / } или (element) => { / код */ } при указании элемента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. Небезопасно: выполняет произвольный JavaScript в процессе сервера Playwright и эквивалентно RCE.
- Параметры:
code(строка, необязательно): Функция JavaScript, содержащая код Playwright для выполнения. Она будет вызвана с одним аргументом, page, который можно использовать для любого взаимодействия со страницей. Например:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(строка, необязательно): Загрузить код из указанного файла. Если указаны и код, и имя файла, код будет проигнорирован.
- Только чтение: false
- browser_select_option
- Название: Выбрать параметр
- Описание: Выбрать параметр в раскрывающемся списке
- Параметры:
element(строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементомtarget(строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элементаvalues(массив): Массив значений для выбора в раскрывающемся списке. Это может быть одно значение или несколько значений.
- Только чтение: false
- browser_snapshot
- Название: Снимок страницы
- Описание: Захват снимка доступности текущей страницы, это лучше, чем скриншот
- Параметры:
target(строка, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элементаfilename(строка, необязательно): Сохранить снимок в файл Markdown вместо возврата в ответе.depth(число, необязательно): Ограничить глубину дерева снимкаboxes(логическое значение, необязательно): Включать ограничивающую рамку каждого элемента как [box=x,y,width,height] в снимке. Координаты относительно области просмотра, в CSS-пикселях (Element.getBoundingClientRect)
- Только чтение: true
- browser_take_screenshot
- Название: Сделать скриншот
- Описание: Сделать скриншот текущей страницы. Нельзя выполнять действия на основе скриншота, используйте browser_snapshot для действий.
- Параметры:
element(строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементомtarget(строка, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элементаtype(строка, необязательно): Формат изображения для скриншота. Если не задан, определяется по расширению имени файла, иначе 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(массив, необязательно): Заголовки для добавления в формате "Имя: Значение"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(строка): Имя cookievalue(строка): Значение cookiedomain(строка, необязательно): Домен cookiepath(строка, необязательно): Путь cookieexpires(число, необязательно): Срок действия cookie как Unix-временная меткаhttpOnly(логическое, необязательно): Является ли cookie только HTTPsecure(логическое, необязательно): Является ли cookie защищённымsameSite(строка, необязательно): Атрибут SameSite cookie
- Только чтение: 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, локальное хранилище) из файла. Это очищает существующие cookies и локальное хранилище перед восстановлением.
- Параметры:
filename(строка): Путь к файлу состояния хранилища для восстановления
- Только чтение: false
- browser_storage_state
- Название: Сохранить состояние хранилища
- Описание: Сохранить состояние хранилища (cookies, локальное хранилище) в файл для последующего использования
- Параметры:
filename(строка, необязательно): Имя файла для сохранения состояния хранилища. По умолчанию используетсяstorage-state-{timestamp}.json, если не указано.
- Только чтение: true
Инструменты разработчика (опционально через --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
- Название: Возобновить приостановленное выполнение скрипта
- Описание: Возобновить выполнение скрипта после его приостановки. При вызове с шагом, установленным в 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(число): Координата 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. По умолчанию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