Skip to main content

ElectronApplication

Представление приложения Electron. Вы можете использовать electron.launch() для получения экземпляра приложения. Этот экземпляр позволяет управлять основным процессом Electron, а также работать с окнами Electron:

const { _electron: electron } = require('playwright');

(async () => {
// Запуск приложения Electron.
const electronApp = await electron.launch({ args: ['main.js'] });

// Оценка выражения в контексте Electron.
const appPath = await electronApp.evaluate(async ({ app }) => {
// Это выполняется в основном процессе Electron, параметр здесь всегда
// является результатом require('electron') в основном скрипте приложения.
return app.getAppPath();
});
console.log(appPath);

// Получить первое окно, которое открывает приложение, подождать при необходимости.
const window = await electronApp.firstWindow();
// Вывести заголовок.
console.log(await window.title());
// Сделать скриншот.
await window.screenshot({ path: 'intro.png' });
// Направить консоль Electron в терминал Node.
window.on('console', console.log);
// Нажать кнопку.
await window.click('text=Click me');
// Закрыть приложение.
await electronApp.close();
})();

Методы

browserWindow

Добавлено в: v1.11 electronApplication.browserWindow

Возвращает объект BrowserWindow, который соответствует данной странице Playwright.

Использование

await electronApplication.browserWindow(page);

Аргументы

  • page [Page]#

    Страница, для которой нужно получить окно.

Возвращает

  • [Promise]<[JSHandle]>#

close

Добавлено в: v1.9 electronApplication.close

Закрывает приложение Electron.

Использование

await electronApplication.close();

Возвращает

  • [Promise]<[void]>#

context

Добавлено в: v1.9 electronApplication.context

Этот метод возвращает контекст браузера, который можно использовать для настройки маршрутизации на уровне контекста и т.д.

Использование

electronApplication.context();

Возвращает

  • [BrowserContext]#

evaluate

Добавлено в: v1.9 electronApplication.evaluate

Возвращает значение, возвращаемое pageFunction.

Если функция, переданная в electronApplication.evaluate(), возвращает [Promise], то electronApplication.evaluate() будет ждать разрешения промиса и вернет его значение.

Если функция, переданная в electronApplication.evaluate(), возвращает не-[Serializable] значение, то electronApplication.evaluate() вернет undefined. Playwright также поддерживает передачу некоторых дополнительных значений, которые не сериализуемы с помощью JSON: -0, NaN, Infinity, -Infinity.

Использование

await electronApplication.evaluate(pageFunction);
await electronApplication.evaluate(pageFunction, arg);

Аргументы

  • pageFunction [function] | [Electron]#

    Функция, которая будет оцениваться в основном процессе Electron.

  • arg [EvaluationArgument] (опционально)#

    Опциональный аргумент, который передается в pageFunction.

Возвращает

  • [Promise]<[Serializable]>#

evaluateHandle

Добавлено в: v1.9 electronApplication.evaluateHandle

Возвращает значение, возвращаемое pageFunction в виде [JSHandle].

Единственное отличие между electronApplication.evaluate() и electronApplication.evaluateHandle() заключается в том, что electronApplication.evaluateHandle() возвращает [JSHandle].

Если функция, переданная в electronApplication.evaluateHandle(), возвращает [Promise], то electronApplication.evaluateHandle() будет ждать разрешения промиса и вернет его значение.

Использование

await electronApplication.evaluateHandle(pageFunction);
await electronApplication.evaluateHandle(pageFunction, arg);

Аргументы

  • pageFunction [function] | [Electron]#

    Функция, которая будет оцениваться в основном процессе Electron.

  • arg [EvaluationArgument] (опционально)#

    Опциональный аргумент, который передается в pageFunction.

Возвращает

  • [Promise]<[JSHandle]>#

firstWindow

Добавлено в: v1.9 electronApplication.firstWindow

Удобный метод, который ждет открытия первого окна приложения.

Использование

const electronApp = await electron.launch({
args: ['main.js']
});
const window = await electronApp.firstWindow();
// ...

Аргументы

  • options [Object] (опционально)
    • timeout [number] (опционально) Добавлено в: v1.33#

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

Возвращает

  • [Promise]<[Page]>#

process

Добавлено в: v1.21 electronApplication.process

Возвращает основной процесс для этого приложения Electron.

Использование

electronApplication.process();

Возвращает

  • [ChildProcess]#

waitForEvent

Добавлено в: v1.9 electronApplication.waitForEvent

Ожидает срабатывания события и передает его значение в предикатную функцию. Возвращает результат, когда предикат возвращает истинное значение. Выдаст ошибку, если приложение будет закрыто до срабатывания события. Возвращает значение данных события.

Использование

const windowPromise = electronApp.waitForEvent('window');
await mainWindow.click('button');
const window = await windowPromise;

Аргументы

  • event [string]#

    Имя события, то же самое, что обычно передается в *.on(event).

  • optionsOrPredicate [function] | [Object] (опционально)#

    • predicate [function]

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

    • timeout [number] (опционально)

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

    Либо предикат, который получает событие, либо объект параметров. Опционально.

Возвращает

  • [Promise]<[Object]>#

windows

Добавлено в: v1.9 electronApplication.windows

Удобный метод, который возвращает все открытые окна.

Использование

electronApplication.windows();

Возвращает

  • [Array]<[Page]>#

События

on('close')

Добавлено в: v1.9 electronApplication.on('close')

Это событие возникает, когда процесс приложения был завершен.

Использование

electronApplication.on('close', data => {});

on('console')

Добавлено в: v1.42 electronApplication.on('console')

Срабатывает, когда JavaScript в основном процессе Electron вызывает один из методов API консоли, например console.log или console.dir.

Аргументы, переданные в console.log, доступны в аргументе обработчика события [ConsoleMessage].

Использование

electronApp.on('console', async msg => {
const values = [];
for (const arg of msg.args())
values.push(await arg.jsonValue());
console.log(...values);
});
await electronApp.evaluate(() => console.log('hello', 5, { foo: 'bar' }));

Данные события

  • [ConsoleMessage]

on('window')

Добавлено в: v1.9 electronApplication.on('window')

Это событие возникает для каждого окна, которое создается и загружается в Electron. Оно содержит [Page], который можно использовать для автоматизации с помощью Playwright.

Использование

electronApplication.on('window', data => {});

Данные события

  • [Page]