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傳回對應於給定 Playwright 頁面的 BrowserWindow 物件。
用法
await electronApplication.browserWindow(page);
引數
傳回
close
Added in: v1.9關閉 Electron 應用程式。
用法
await electronApplication.close();
傳回
context
Added in: v1.9此方法傳回瀏覽器內容,可用於設定內容範圍的路由等。
用法
electronApplication.context();
傳回
evaluate
Added in: 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 (optional)#要傳遞給 pageFunction 的選用引數。
傳回
evaluateHandle
Added in: v1.9以 JSHandle 形式傳回 pageFunction 的傳回值。
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 (optional)#要傳遞給 pageFunction 的選用引數。
傳回
firstWindow
Added in: v1.9便利方法,用於等待第一個應用程式視窗開啟。
用法
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傳回此 Electron 應用程式的主要程序。
用法
electronApplication.process();
傳回
waitForEvent
Added in: v1.9等待事件觸發並將其值傳遞到述詞函式中。當述詞傳回真值時傳回。如果應用程式在事件觸發之前關閉,將擲回錯誤。傳回事件資料值。
用法
const windowPromise = electronApp.waitForEvent('window');
await mainWindow.click('button');
const window = await windowPromise;
引數
-
事件名稱,通常傳遞到
*.on(event)
中的名稱。 -
optionsOrPredicate
function | Object (optional)#-
predicate
function接收事件資料,並在等待應解析時解析為真值。
-
timeout
number (optional)等待的最大時間(以毫秒為單位)。預設值為
30000
(30 秒)。傳遞0
以停用逾時。預設值可以使用 browserContext.setDefaultTimeout() 變更。
接收事件的述詞或選項物件。選用。
-
傳回
windows
Added in: v1.9便利方法,用於傳回所有已開啟的視窗。
用法
electronApplication.windows();
傳回
事件
on('close')
Added in: v1.9當應用程式程序終止時,會發出此事件。
用法
electronApplication.on('close', data => {});
on('console')
Added in: v1.42當 Electron 主要程序內的 JavaScript 呼叫其中一個 console 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')
Added in: v1.9針對在 Electron 中建立和載入的每個視窗發出此事件。它包含一個 Page,可用於 Playwright 自動化。
用法
electronApplication.on('window', data => {});
事件資料