Skip to main content

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

Added in: v1.11 electronApplication.browserWindow

傳回對應於給定 Playwright 頁面的 BrowserWindow 物件。

用法

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

Added in: 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

Added in: v1.9 electronApplication.evaluateHandle

JSHandle 形式傳回 pageFunction 的傳回值。

electronApplication.evaluate()electronApplication.evaluateHandle() 之間的唯一區別在於 electronApplication.evaluateHandle() 傳回 JSHandle

如果傳遞給 electronApplication.evaluateHandle() 的函式傳回 Promise,則 electronApplication.evaluateHandle() 將等待 Promise 解析並傳回其值。

用法

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

引數

傳回


firstWindow

Added in: v1.9 electronApplication.firstWindow

便利方法,用於等待第一個應用程式視窗開啟。

用法

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

引數

  • options Object (optional)
    • timeout number (optional)Added in: v1.33#

      等待的最大時間(以毫秒為單位)。預設值為 30000 (30 秒)。傳遞 0 以停用逾時。預設值可以使用 browserContext.setDefaultTimeout() 變更。

傳回


process

Added in: v1.21 electronApplication.process

傳回此 Electron 應用程式的主要程序。

用法

electronApplication.process();

傳回


waitForEvent

Added in: v1.9 electronApplication.waitForEvent

等待事件觸發並將其值傳遞到述詞函式中。當述詞傳回真值時傳回。如果應用程式在事件觸發之前關閉,將擲回錯誤。傳回事件資料值。

用法

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

引數

  • event string#

    事件名稱,通常傳遞到 *.on(event) 中的名稱。

  • optionsOrPredicate function | Object (optional)#

    • predicate function

      接收事件資料,並在等待應解析時解析為真值。

    • timeout number (optional)

      等待的最大時間(以毫秒為單位)。預設值為 30000 (30 秒)。傳遞 0 以停用逾時。預設值可以使用 browserContext.setDefaultTimeout() 變更。

    接收事件的述詞或選項物件。選用。

傳回


windows

Added in: v1.9 electronApplication.windows

便利方法,用於傳回所有已開啟的視窗。

用法

electronApplication.windows();

傳回


事件

on('close')

Added in: v1.9 electronApplication.on('close')

當應用程式程序終止時,會發出此事件。

用法

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

on('console')

Added in: 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')

Added in: v1.9 electronApplication.on('window')

針對在 Electron 中建立和載入的每個視窗發出此事件。它包含一個 Page,可用於 Playwright 自動化。

用法

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

事件資料