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返回与给定 Playwright 页面对应的 BrowserWindow 对象。
用法
await electronApplication.browserWindow(page);
参数
返回值
close
添加于: v1.9关闭 Electron 应用程序。
用法
await electronApplication.close();
返回值
context
添加于: v1.9此方法返回浏览器上下文,可用于设置上下文范围的路由等。
用法
electronApplication.context();
返回值
evaluate
添加于: v1.9返回 pageFunction 的返回值。
如果传递给 electronApplication.evaluate() 的函数返回 Promise,则 electronApplication.evaluate() 将等待 Promise 解析并返回其值。
如果传递给 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 的可选参数。
返回值
evaluateHandle
添加于: v1.9将 pageFunction 的返回值作为 JSHandle 返回。
electronApplication.evaluate() 和 electronApplication.evaluateHandle() 之间的唯一区别是 electronApplication.evaluateHandle() 返回 JSHandle。
如果传递给 electronApplication.evaluateHandle() 的函数返回 Promise,则 electronApplication.evaluateHandle() 将等待 Promise 解析并返回其值。
用法
await electronApplication.evaluateHandle(pageFunction);
await electronApplication.evaluateHandle(pageFunction, arg);
参数
-
pageFunction
function | Electron#要在主 Electron 进程中求值的函数。
-
arg
EvaluationArgument (可选)#传递给 pageFunction 的可选参数。
返回值
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() 进行更改。
-
返回值
process
添加于: v1.21返回此 Electron 应用程序的主进程。
用法
electronApplication.process();
返回值
waitForEvent
添加于: v1.9等待事件触发并将其值传递到谓词函数中。当谓词返回真值时返回。如果应用程序在事件触发之前关闭,将抛出错误。返回事件数据值。
用法
const windowPromise = electronApp.waitForEvent('window');
await mainWindow.click('button');
const window = await windowPromise;
参数
-
事件名称,通常与传递到
*.on(event)
中的名称相同。 -
optionsOrPredicate
function | Object (可选)#-
predicate
function接收事件数据并在等待应该解析时解析为真值。
-
timeout
number (可选)等待的最大时间,以毫秒为单位。默认为
30000
(30 秒)。传递0
以禁用超时。默认值可以使用 browserContext.setDefaultTimeout() 进行更改。
接收事件的谓词或选项对象。可选。
-
返回值
windows
添加于: v1.9便捷方法,返回所有已打开的窗口。
用法
electronApplication.windows();
返回值
事件
on('close')
添加于: v1.9当应用程序进程终止时,将发出此事件。
用法
electronApplication.on('close', data => {});
on('console')
添加于: v1.42当 Electron 主进程中的 JavaScript 调用控制台 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' }));
事件数据
on('window')
添加于: v1.9对于在 Electron 中创建和加载的每个窗口,都会发出此事件。它包含一个 Page,可用于 Playwright 自动化。
用法
electronApplication.on('window', data => {});
事件数据