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Возвращает объект BrowserWindow, который соответствует данной странице Playwright.
Использование
await electronApplication.browserWindow(page);
Аргументы
-
page
[Page]#Страница, для которой нужно получить окно.
Возвращает
- [Promise]<[JSHandle]>#
close
Добавлено в: v1.9Закрывает приложение Electron.
Использование
await electronApplication.close();
Возвращает
- [Promise]<[void]>#
context
Добавлено в: v1.9Этот метод возвращает контекст браузера, который можно использовать для настройки маршрутизации на уровне контекста и т.д.
Использование
electronApplication.context();
Возвращает
- [BrowserContext]#
evaluate
Добавлено в: v1.9Возвращает значение, возвращаемое 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Возвращает значение, возвращаемое 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Удобный метод, который ждет открытия первого окна приложения.
Использование
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Возвращает основной процесс для этого приложения Electron.
Использование
electronApplication.process();
Возвращает
- [ChildProcess]#
waitForEvent
Добавлено в: v1.9Ожидает срабатывания события и передает его значение в предикатную функцию. Возвращает результат, когда предикат возвращает истинное значение. Выдаст ошибку, если приложение будет закрыто до срабатывания события. Возвращает значение данных события.
Использование
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();
Возвращает
- [Array]<[Page]>#
События
on('close')
Добавлено в: v1.9Это событие возникает, когда процесс приложения был завершен.
Использование
electronApplication.on('close', data => {});
on('console')
Добавлено в: v1.42Срабатывает, когда 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Это событие возникает для каждого окна, которое создается и загружается в Electron. Оно содержит [Page], который можно использовать для автоматизации с помощью Playwright.
Использование
electronApplication.on('window', data => {});
Данные события
- [Page]