Electron
Playwright имеет экспериментальную поддержку автоматизации Electron. Доступ к пространству имён electron можно получить следующим образом:
const { _electron } = require('playwright'); Пример сценария автоматизации Electron:
const { _electron: electron } = require('playwright');
(async () => {
// Launch Electron app.
const electronApp = await electron.launch({ args: ['main.js'] });
// Evaluation expression in the Electron context.
const appPath = await electronApp.evaluate(async ({ app }) => {
// This runs in the main Electron process, parameter here is always
// the result of the require('electron') in the main app script.
return app.getAppPath();
});
console.log(appPath);
// Get the first window that the app opens, wait if necessary.
const window = await electronApp.firstWindow();
// Print the title.
console.log(await window.title());
// Capture a screenshot.
await window.screenshot({ path: 'intro.png' });
// Direct Electron console to Node terminal.
window.on('console', console.log);
// Click button.
await window.click('text=Click me');
// Exit app.
await electronApp.close();
})(); Поддерживаются следующие версии Electron:
- v12.2.0+
- v13.4.0+
- v14+
Известные проблемы:
Если не удаётся запустить Electron и во время запуска возникают тайм-ауты, попробуйте выполнить следующие действия:
- Убедитесь, что fuse
nodeCliInspect(FuseV1Options.EnableNodeCliInspectArguments) не установлен в значениеfalse.
Имитация нативных диалоговых окон:
Playwright не перехватывает вызовы нативного API Electron dialog (dialog.showOpenDialog, dialog.showSaveDialog, dialog.showMessageBox и т. д.), поскольку они выполняются в главном процессе Electron и напрямую обращаются к API ОС. Используйте electronApplication.evaluate(), чтобы заменить соответствующие методы в главном процессе и обеспечить детерминированное выполнение тестов без интерфейса ОС:
// Stub the open dialog to always return a fixed path.
await electronApp.evaluate(({ dialog }, filePaths) => {
dialog.showOpenDialog = () => Promise.resolve({ canceled: false, filePaths });
}, ['/path/to/file.txt']);
// Stub the save dialog.
await electronApp.evaluate(({ dialog }, filePath) => {
dialog.showSaveDialog = () => Promise.resolve({ canceled: false, filePath });
}, '/path/to/saved.txt');
// Stub showMessageBox to click the first button.
await electronApp.evaluate(({ dialog }) => {
dialog.showMessageBox = () => Promise.resolve({ response: 0, checkboxChecked: false });
}); Замена действует, пока приложение не будет закрыто. Синхронные варианты (showOpenDialogSync, showSaveDialogSync, showMessageBoxSync) можно подменить таким же образом — просто верните значение напрямую вместо Promise.
Методы
launch
Запускает приложение Electron, указанное в параметре executablePath.
Использование
await electron.launch(); await electron.launch(options);
Аргументы
-
optionsObject (необязательно)-
acceptDownloadsboolean (необязательно)Автоматически ли загружать все вложения. По умолчанию —
true, то есть все загрузки принимаются. -
argsArray<string> (необязательно)Дополнительные аргументы, передаваемые приложению при запуске. Обычно здесь указывают имя главного скрипта.
-
artifactsDirstring (необязательно)Если указано, артефакты (трассировки, видео, загрузки, файлы HAR и т. д.) сохраняются в этот каталог. Каталог не очищается при закрытии браузера. Если параметр не указан, используется временный каталог, который очищается при закрытии браузера.
-
bypassCSPboolean (необязательно)Включает обход Content-Security-Policy страницы. По умолчанию —
false. -
chromiumSandboxboolean (необязательно)Включает песочницу Chromium. По умолчанию —
false. -
colorSchemenull | "light" | "dark" | "no-preference" (необязательно)Имитирует медиавозможность prefers-colors-scheme; поддерживаются значения
'light'и'dark'. Подробнее см. в описании page.emulateMedia(). Передачаnullсбрасывает эмуляцию к системным настройкам по умолчанию. По умолчанию —'light'. -
cwdstring (необязательно)Текущий рабочий каталог, из которого запускается приложение.
-
envObject<string, string> (необязательно)Задаёт переменные окружения, доступные Electron. По умолчанию —
process.env. -
executablePathstring (необязательно)Запускает указанное приложение Electron. Если параметр не указан, запускается исполняемый файл Electron по умолчанию, установленный в этом пакете и расположенный в
node_modules/.bin/electron. -
extraHTTPHeadersObject<string, string> (необязательно)Объект с дополнительными HTTP-заголовками, которые будут отправляться с каждым запросом. По умолчанию заголовки не задаются.
-
geolocationObject (необязательно) -
httpCredentialsObject | Array<Object> (необязательно)-
usernamestring -
passwordstring -
originstring (необязательно)Ограничивает отправку учётных данных HTTP для указанного источника (scheme://host:port).
-
send"unauthorized" | "always" (необязательно)Этот параметр применяется только к запросам, отправляемым соответствующим APIRequestContext, и не влияет на запросы браузера.
'always'— заголовокAuthorizationс учётными данными базовой аутентификации отправляется с каждым API-запросом.'unauthorized— учётные данные отправляются только при получении ответа 401 (Unauthorized) с заголовкомWWW-Authenticate. По умолчанию —'unauthorized'.
Учётные данные для HTTP-аутентификации. Если источник не указан, имя пользователя и пароль отправляются на любые серверы при получении ответов с отказом в авторизации.
Передайте массив, чтобы использовать разные учётные данные для разных источников. Используется первая запись, соответствующая источнику запроса; записи без источника соответствуют любому запросу.
-
-
ignoreHTTPSErrorsboolean (необязательно)Игнорировать ли ошибки HTTPS при отправке сетевых запросов. По умолчанию —
false. -
localestring (необязательно)Задаёт локаль пользователя, например
en-GB,de-DEи т. д. Локаль влияет на значениеnavigator.language, значение заголовка запросаAccept-Language, а также на правила форматирования чисел и дат. По умолчанию используется системная локаль. Подробнее об эмуляции см. в нашем руководстве по эмуляции. -
offlineboolean (необязательно)Имитировать ли отключение сети. По умолчанию —
false. Подробнее см. в разделе эмуляция сети. -
recordHarObject (необязательно)-
omitContentboolean (необязательно)Необязательный параметр, определяющий, нужно ли исключать содержимое запросов из HAR. По умолчанию —
false. Устарел; вместо него используйте политикуcontent. -
content"omit" | "embed" | "attach" (необязательно)Необязательный параметр, определяющий способ обработки содержимого ресурсов. Если указано
omit, содержимое не сохраняется. Если указаноattach, ресурсы сохраняются в виде отдельных файлов или записей в ZIP-архиве. Если указаноembed, содержимое встраивается непосредственно в файл HAR согласно спецификации HAR. По умолчанию используетсяattachдля выходных файлов.zipиembedдля всех остальных расширений файлов. -
pathstringПуть в файловой системе, куда нужно записать файл HAR. Если имя файла заканчивается на
.zip, по умолчанию используетсяcontent: 'attach'. -
mode"full" | "minimal" (необязательно)Если задано значение
minimal, из HAR записывается только информация, необходимая для маршрутизации. Не записываются размеры, время, сведения о страницах, файлах cookie, безопасности и другие типы данных HAR, не используемые при воспроизведении из HAR. По умолчанию —full. -
urlFilterstring | RegExp (необязательно)Шаблон glob или регулярное выражение для фильтрации запросов, сохраняемых в HAR. Если в параметрах контекста задан baseURL, а переданный URL является путём, он объединяется с ним с помощью конструктора
new URL(). По умолчанию не задаётся.
Включает запись HAR для всех страниц в файл
recordHar.path. Если параметр не указан, HAR не записывается. Чтобы сохранить HAR, обязательно дождитесь выполнения browserContext.close(). -
-
recordVideoObject (необязательно)-
dirstring (необязательно)Путь к каталогу для сохранения видео. Если не указан, видео сохраняются в
artifactsDir(см. параметры browserType.launch()). -
sizeObject (необязательно)Необязательные размеры записываемого видео. Если не указаны, размер будет равен
viewport, уменьшенному при необходимости до 800x800. Еслиviewportявно не задан, размер видео по умолчанию составляет 800x450. Изображение каждой страницы при необходимости уменьшается, чтобы соответствовать указанному размеру. -
showActionsObject (необязательно)-
durationnumber (необязательно)Время отображения каждой аннотации в миллисекундах. По умолчанию —
500. -
position"top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right" (необязательно)Положение наложения с названием действия. По умолчанию —
"top-right". -
fontSizenumber (необязательно)Размер шрифта названия действия в пикселях. По умолчанию —
24. -
cursor"none" | "pointer" (необязательно)Оформление курсора, отображаемое для действий указателя.
"pointer"(значение по умолчанию) отображает указатель мыши, который перемещается от точки предыдущего действия к точке следующего."none"отключает оформление курсора.
Если параметр указан, во время записи видео на взаимодействующих элементах включаются визуальные аннотации.
-
Включает запись видео для всех страниц в каталог
recordVideo.dir. Если параметр не указан, видео не записываются. Чтобы сохранить видео, обязательно дождитесь выполнения browserContext.close(). -
-
timeoutnumber (необязательно)Максимальное время ожидания запуска приложения в миллисекундах. По умолчанию —
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. -
timezoneIdstring (необязательно)Изменяет часовой пояс контекста. Список поддерживаемых идентификаторов часовых поясов см. в файле metaZones.txt библиотеки ICU. По умолчанию используется системный часовой пояс.
-
tracesDirstring (необязательно)Если указано, трассировки сохраняются в этот каталог.
-
Возвращает
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-electron