【问题标题】:PlayWright Electron: Is it possible to get BrowserWindow from Page?PlayWright Electron:是否可以从 Page 获取 BrowserWindow?
【发布时间】:2022-12-11 10:08:39
【问题描述】:
我试图找到包含加载页面的电子窗口对象。我想采取以下行动:
let window1 : BrowserWindow | null = null
let window2 : BrowserWindow | null = null
electronApp.on("window", async (page) => {
//evaluate page so that title is loaded
await page.evaluate(() => { });
if(await page.title() === 'page1') {
window1 = getElectronBrowserWindow(page); // Example
}
else if(await page.title() === 'page2') {
window2 = getElectronBrowserWindow(page);
}
});
在我的测试中,我想做类似的事情:
test("check if window is not visible", async () => {
let visibility = window1.isVisible();
expect(visibility).toBeFalsy
});
});
我遇到过 electronApplication.browserWindow(page)。但是,它不提供页面的 BrowserWindow 对象。
【问题讨论】:
标签:
playwright
playwright-test
electron-vue
【解决方案1】:
是的,这是可以做到的。
electronApplication.browserWindow(page)提供的是JSHandle<Electron.BrowserWindow>类型的对象。你必须使用它的evaluate() 方法。
我不确定您测试的所有细节以及 b/w window1 和 window2 的差异,但这是一个测试浏览器窗口的示例是可见的。希望这能澄清
import { expect, test } from "@playwright/test";
import { ElectronApplication, Page, JSHandle, _electron } from "playwright";
let electronApp: ElectronApplication;
let page: Page;
let bwHandle: JSHandle<Electron.BrowserWindow>;
test.beforeAll(async () => {
electronApp = await _electron.launch({
// your launch options
});
page = await electronApp.firstWindow();
});
test("check if window is visible", async () => {
bwHandle = await electronApp.browserWindow(page);
const visible = await bwHandle.evaluate((win) => win.isVisible());
expect(visible).toBeTruthy();
});
test.afterAll(async () => {
await electronApp.close();
});