Skip to main content

ElectronApplication

Electron 应用程序表示。你可以使用 electron.launch([options]) 获取应用程序实例。使用此实例,你可以控制主 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();
})();

electronApplication.on('close')

Added in: v1.9

当应用程序关闭时发出此事件。

electronApplication.on('window')

Added in: v1.9

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

electronApplication.browserWindow(page)

Added in: v1.11

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

electronApplication.close()

Added in: v1.9

关闭 Electron 应用程序。

electronApplication.context()

Added in: v1.9

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

electronApplication.evaluate(pageFunction[, arg])

Added in: v1.9

返回 pageFunction 的返回值。

如果传递给 electronApplication.evaluate(pageFunction[, arg]) 的函数返回 Promise,则 electronApplication.evaluate(pageFunction[, arg]) 将等待 promise 解析并返回其值。

如果传递给 electronApplication.evaluate(pageFunction[, arg]) 的函数返回非 Serializable 值,则 electronApplication.evaluate(pageFunction[, arg]) 返回 undefined。Playwright 还支持传输一些无法通过 JSON 序列化的附加值:-0NaNInfinity-Infinity

electronApplication.evaluateHandle(pageFunction[, arg])

Added in: v1.9

JSHandle 形式返回 pageFunction 的返回值。

electronApplication.evaluate(pageFunction[, arg])electronApplication.evaluateHandle(pageFunction[, arg]) 之间的唯一区别是 electronApplication.evaluateHandle(pageFunction[, arg]) 返回 JSHandle

如果传递给 electronApplication.evaluateHandle(pageFunction[, arg]) 的函数返回 Promise,则 electronApplication.evaluateHandle(pageFunction[, arg]) 将等待 promise 解析并返回其值。

electronApplication.firstWindow()

Added in: v1.9

等待打开第一个应用程序窗口的便捷方法。通常你的脚本将以以下内容开头:

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

electronApplication.process()

Added in: v1.21

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

electronApplication.waitForEvent(event[, optionsOrPredicate])

Added in: v1.9
  • event <string> 事件名称,通常传递给 *.on(event) 的名称。#
  • optionsOrPredicate? <function|Object> 接收事件的谓词或选项对象。可选。#
    • predicate <function> 接收事件数据并在等待应解析时解析为真值。
    • timeout? <number> 等待的最大时间(以毫秒为单位)。默认为 30000(30 秒)。传递 0 以禁用超时。可以使用 browserContext.setDefaultTimeout(timeout) 更改默认值。
  • returns: <Promise<Object>>#

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

const [window] = await Promise.all([
electronApp.waitForEvent('window'),
mainWindow.click('button')
]);

electronApplication.windows()

Added in: v1.9

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