跳转到主要内容

ElectronApplication

Electron 应用程序的表示。你可以使用 electron.launch() 获取应用程序实例。这个实例可以控制 Electron 主进程并与 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();
})();

方法

browserWindow

添加于:v1.11 electronApplication.browserWindow

返回与给定 Playwright 页面对应的 BrowserWindow 对象。

用法

await electronApplication.browserWindow(page);

参数

  • page Page#

    要获取窗口的页面。

返回


close

添加于:v1.9 electronApplication.close

关闭 Electron 应用程序。

用法

await electronApplication.close();

返回


context

添加于:v1.9 electronApplication.context

此方法返回可用于设置上下文范围路由等的浏览器上下文。

用法

electronApplication.context();

返回


evaluate

添加于:v1.9 electronApplication.evaluate

返回 pageFunction 的返回值。

如果传递给 electronApplication.evaluate() 的函数返回一个 Promise,那么 electronApplication.evaluate() 将等待 Promise 解决并返回其值。

如果传递给 electronApplication.evaluate() 的函数返回一个不可序列化的值,那么 electronApplication.evaluate() 返回 undefined。Playwright 也支持传输一些 JSON 不可序列化的额外值:-0NaNInfinity-Infinity

用法

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

参数

返回


evaluateHandle

添加于:v1.9 electronApplication.evaluateHandle

pageFunction 的返回值作为 JSHandle 返回。

electronApplication.evaluate()electronApplication.evaluateHandle() 唯一的区别是 electronApplication.evaluateHandle() 返回 JSHandle

如果传递给 electronApplication.evaluateHandle() 的函数返回一个 Promise,那么 electronApplication.evaluateHandle() 将等待 Promise 解决并返回其值。

用法

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

参数

返回


firstWindow

添加于:v1.9 electronApplication.firstWindow

等待第一个应用程序窗口打开的便捷方法。

用法

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

参数

  • options Object (可选)
    • timeout 数字 (可选)新增于:v1.33#

      最长等待时间,单位为毫秒。默认为 30000(30 秒)。传入 0 禁用超时。可以通过使用 browserContext.setDefaultTimeout() 来更改默认值。

返回


process

新增于: v1.21 electronApplication.process

返回此 Electron 应用程序的主进程。

用法

electronApplication.process();

返回


waitForEvent

添加于:v1.9 electronApplication.waitForEvent

等待事件触发并将其值传递给谓词函数。当谓词返回真值时返回。如果在事件触发之前应用程序关闭,则会抛出错误。返回事件数据值。

用法

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

参数

  • event string#

    事件名称,通常传递给 *.on(event) 的相同名称。

  • optionsOrPredicate 函数 | 对象 (可选)#

    • predicate function

      接收事件数据并在等待应解决时解析为真值。

    • timeout 数字 (可选)

      最长等待时间,单位为毫秒。默认为 30000(30 秒)。传入 0 禁用超时。可以通过使用 browserContext.setDefaultTimeout() 来更改默认值。

    一个接收事件的谓词或一个选项对象。可选。

返回


windows

添加于:v1.9 electronApplication.windows

返回所有已打开窗口的便捷方法。

用法

electronApplication.windows();

返回


事件

on('close')

添加于:v1.9 electronApplication.on('close')

此事件在应用程序进程终止时发出。

用法

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

on('console')

新增于: v1.42 electronApplication.on('console')

当 Electron 主进程中的 JavaScript 调用其中一个控制台 API 方法时发出,例如 console.logconsole.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' }));

事件数据


on('window')

添加于:v1.9 electronApplication.on('window')

此事件为 Electron 中创建并加载的每个窗口发出。它包含一个可用于 Playwright 自动化的 Page

用法

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

事件数据