Spec-Zone.ru › Playwright

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);

Аргументы

  • options Object (необязательно)
    • acceptDownloads boolean (необязательно)

      Автоматически ли загружать все вложения. По умолчанию — true, то есть все загрузки принимаются.

    • args Array<string> (необязательно)

      Дополнительные аргументы, передаваемые приложению при запуске. Обычно здесь указывают имя главного скрипта.

    • artifactsDir string (необязательно)

      Если указано, артефакты (трассировки, видео, загрузки, файлы HAR и т. д.) сохраняются в этот каталог. Каталог не очищается при закрытии браузера. Если параметр не указан, используется временный каталог, который очищается при закрытии браузера.

    • bypassCSP boolean (необязательно)

      Включает обход Content-Security-Policy страницы. По умолчанию — false.

    • chromiumSandbox boolean (необязательно)

      Включает песочницу Chromium. По умолчанию — false.

    • colorScheme null | "light" | "dark" | "no-preference" (необязательно)

      Имитирует медиавозможность prefers-colors-scheme; поддерживаются значения 'light' и 'dark'. Подробнее см. в описании page.emulateMedia(). Передача null сбрасывает эмуляцию к системным настройкам по умолчанию. По умолчанию — 'light'.

    • cwd string (необязательно)

      Текущий рабочий каталог, из которого запускается приложение.

    • env Object<string, string> (необязательно)

      Задаёт переменные окружения, доступные Electron. По умолчанию — process.env.

    • executablePath string (необязательно)

      Запускает указанное приложение Electron. Если параметр не указан, запускается исполняемый файл Electron по умолчанию, установленный в этом пакете и расположенный в node_modules/.bin/electron.

    • extraHTTPHeaders Object<string, string> (необязательно)

      Объект с дополнительными HTTP-заголовками, которые будут отправляться с каждым запросом. По умолчанию заголовки не задаются.

    • geolocation Object (необязательно)

      • latitude number

        Широта от -90 до 90.

      • longitude number

        Долгота от -180 до 180.

      • accuracy number (необязательно)

        Неотрицательное значение точности. По умолчанию — 0.

    • httpCredentials Object | Array<Object> (необязательно)

      • username string

      • password string

      • origin string (необязательно)

        Ограничивает отправку учётных данных HTTP для указанного источника (scheme://host:port).

      • send "unauthorized" | "always" (необязательно)

        Этот параметр применяется только к запросам, отправляемым соответствующим APIRequestContext, и не влияет на запросы браузера. 'always' — заголовок Authorization с учётными данными базовой аутентификации отправляется с каждым API-запросом. 'unauthorized — учётные данные отправляются только при получении ответа 401 (Unauthorized) с заголовком WWW-Authenticate. По умолчанию — 'unauthorized'.

      Учётные данные для HTTP-аутентификации. Если источник не указан, имя пользователя и пароль отправляются на любые серверы при получении ответов с отказом в авторизации.

      Передайте массив, чтобы использовать разные учётные данные для разных источников. Используется первая запись, соответствующая источнику запроса; записи без источника соответствуют любому запросу.

    • ignoreHTTPSErrors boolean (необязательно)

      Игнорировать ли ошибки HTTPS при отправке сетевых запросов. По умолчанию — false.

    • locale string (необязательно)

      Задаёт локаль пользователя, например en-GB, de-DE и т. д. Локаль влияет на значение navigator.language, значение заголовка запроса Accept-Language, а также на правила форматирования чисел и дат. По умолчанию используется системная локаль. Подробнее об эмуляции см. в нашем руководстве по эмуляции.

    • offline boolean (необязательно)

      Имитировать ли отключение сети. По умолчанию — false. Подробнее см. в разделе эмуляция сети.

    • recordHar Object (необязательно)

      • omitContent boolean (необязательно)

        Необязательный параметр, определяющий, нужно ли исключать содержимое запросов из HAR. По умолчанию — false. Устарел; вместо него используйте политику content.

      • content "omit" | "embed" | "attach" (необязательно)

        Необязательный параметр, определяющий способ обработки содержимого ресурсов. Если указано omit, содержимое не сохраняется. Если указано attach, ресурсы сохраняются в виде отдельных файлов или записей в ZIP-архиве. Если указано embed, содержимое встраивается непосредственно в файл HAR согласно спецификации HAR. По умолчанию используется attach для выходных файлов .zip и embed для всех остальных расширений файлов.

      • path string

        Путь в файловой системе, куда нужно записать файл HAR. Если имя файла заканчивается на .zip, по умолчанию используется content: 'attach'.

      • mode "full" | "minimal" (необязательно)

        Если задано значение minimal, из HAR записывается только информация, необходимая для маршрутизации. Не записываются размеры, время, сведения о страницах, файлах cookie, безопасности и другие типы данных HAR, не используемые при воспроизведении из HAR. По умолчанию — full.

      • urlFilter string | RegExp (необязательно)

        Шаблон glob или регулярное выражение для фильтрации запросов, сохраняемых в HAR. Если в параметрах контекста задан baseURL, а переданный URL является путём, он объединяется с ним с помощью конструктора new URL(). По умолчанию не задаётся.

      Включает запись HAR для всех страниц в файл recordHar.path. Если параметр не указан, HAR не записывается. Чтобы сохранить HAR, обязательно дождитесь выполнения browserContext.close().

    • recordVideo Object (необязательно)

      • dir string (необязательно)

        Путь к каталогу для сохранения видео. Если не указан, видео сохраняются в artifactsDir (см. параметры browserType.launch()).

      • size Object (необязательно)

        • width number

          Ширина видеокадра.

        • height number

          Высота видеокадра.

        Необязательные размеры записываемого видео. Если не указаны, размер будет равен viewport, уменьшенному при необходимости до 800x800. Если viewport явно не задан, размер видео по умолчанию составляет 800x450. Изображение каждой страницы при необходимости уменьшается, чтобы соответствовать указанному размеру.

      • showActions Object (необязательно)

        • duration number (необязательно)

          Время отображения каждой аннотации в миллисекундах. По умолчанию — 500.

        • position "top-left" | "top" | "top-right" | "bottom-left" | "bottom" | "bottom-right" (необязательно)

          Положение наложения с названием действия. По умолчанию — "top-right".

        • fontSize number (необязательно)

          Размер шрифта названия действия в пикселях. По умолчанию — 24.

        • cursor "none" | "pointer" (необязательно)

          Оформление курсора, отображаемое для действий указателя. "pointer" (значение по умолчанию) отображает указатель мыши, который перемещается от точки предыдущего действия к точке следующего. "none" отключает оформление курсора.

        Если параметр указан, во время записи видео на взаимодействующих элементах включаются визуальные аннотации.

      Включает запись видео для всех страниц в каталог recordVideo.dir. Если параметр не указан, видео не записываются. Чтобы сохранить видео, обязательно дождитесь выполнения browserContext.close().

    • timeout number (необязательно)

      Максимальное время ожидания запуска приложения в миллисекундах. По умолчанию — 30000 (30 секунд). Передайте 0, чтобы отключить тайм-аут.

    • timezoneId string (необязательно)

      Изменяет часовой пояс контекста. Список поддерживаемых идентификаторов часовых поясов см. в файле metaZones.txt библиотеки ICU. По умолчанию используется системный часовой пояс.

    • tracesDir string (необязательно)

      Если указано, трассировки сохраняются в этот каталог.

Возвращает

  • Promise<ElectronApplication>

© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-electron

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API