这可能吗?某处有向导吗?基本上我想对 Electron 应用程序进行 E2E 测试,并将编写用户交互脚本,即制作一个在 Electron 应用程序内部交互的“机器人”或“puppeteer ”用户。
最佳答案
编辑:已经 6 个多月了,有一些变通方法可以让您在一定程度上使用 puppeteer 控制 BrowserWindow。
如果做E2E测试,我还是推荐spectron,因为electron网站上就是这么写的。
您将需要 puppeteer-in-electron
和 puppeteer-core
,
const { BrowserWindow, app } = require("electron")
const pie = require("puppeteer-in-electron")
const puppeteer = require("puppeteer-core");
const main = async () => {
const browser = await pie.connect(app, puppeteer);
const window = new BrowserWindow();
const url = "about:blank";
await window.loadURL(url);
const page = await pie.getPage(browser, window);
// here is your page to control
await page.goto('https://example.net');
console.log(await page.title()); // should print Example Domain
// use the following instead of browser.close or disconnect
window.destroy();
};
main();
目前还有其他实验性解决方案可用,但不能保证适用于所有 puppeteer API。
下面是之前的回答,
与 puppeteer 无关,但 Electron 有 spectron,它允许您使用 chrome 驱动程序测试 electron 应用程序,前往他们的 home page.和 api doc .
Spectron 构建于 ChromeDriver 和 WebDriverIO 之上。因此,如果您已经在使用 puppeteer,语法和用法会很熟悉。
快速启动 Spectron
让您快速入门的命令,
mkdir electron-test && cd electron-test
git clone https://github.com/electron/electron-quick-start
yarn init -y
yarn add -D spectron mocha
因此,我们在该文件夹中有 spectron、mocha 和 quickstart 文件。现在让我们在 test/spec.js
路径上创建一些规范。
const Application = require("spectron").Application;
const assert = require("assert");
describe("Verify a visible window is opened with a title", function() {
before(async function() {
this.app = new Application({
// your app or electron executable path
path: "node_modules/electron/dist/electron",
// path to main.js file location
args: ["electron-quick-start/"]
});
await this.app.start();
});
after(async function() {
this.app.stop();
});
it("is visible", async function() {
const isVisible = await this.app.browserWindow.isVisible();
assert.equal(isVisible, true);
});
it("gets the title", async function() {
const title = await this.app.client.getTitle();
assert.equal(title, "Hello World!");
});
});
让我们运行它,
➜ electron-test ./node_modules/.bin/mocha
Verify a visible window is opened with a title
✓ is visible
✓ gets the title
2 passing (665ms)
关于javascript - 我们如何使用 Puppeteer 编写/自动化 Electron 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896279/