跳到主要内容

ElectronApplication

Electron 应用程序的表示。你可以使用 [electron.launch()](/api/class-electron.mdx#electron-launch) 获取应用程序实例。通过这个实例,你可以控制主 Electron 进程以及操作 Electron 窗口:

```js
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 \{#electron-application-browser-window}

<font size="2" style={{position: "relative", top: "-20px"}}>Added in: v1.11</font><x-search>electronApplication.browserWindow</x-search>

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

**用法**

```js
await electronApplication.browserWindow(page);

参数

  • page Page#

    要获取窗口的页面对象。

返回值


close

Added in: v1.9 electronApplication.close

关闭 Electron 应用程序。

用法

await electronApplication.close();

返回值


context

Added in: v1.9 electronApplication.context

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

用法

electronApplication.context();

返回值


evaluate

添加于: v1.9 electronApplication.evaluate

返回 pageFunction 的执行结果。

如果传递给 electronApplication.evaluate() 的函数返回一个 Promise,则 electronApplication.evaluate() 会等待该 Promise 解析并返回其值。

如果传递给 electronApplication.evaluate() 的函数返回一个非 Serializable 值,则 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();
// ...

参数

返回值


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 function | Object (可选)#

    • predicate function

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

    • timeout number (可选)

      最大等待时间(毫秒)。默认为 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 调用 console 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 => {});

事件数据