Javascript 我们如何使用Puppeter为电子应用程序编写脚本/实现自动化?

Javascript 我们如何使用Puppeter为电子应用程序编写脚本/实现自动化?,javascript,automation,electron,puppeteer,e2e-testing,Javascript,Automation,Electron,Puppeteer,E2e Testing,可能吗?某处有导游吗?基本上,我想对一个电子应用程序进行E2E测试,并编写用户交互脚本,即制作一个“机器人”或“傀儡”用户,在电子应用程序内部进行交互。编辑:已经6个多月了,有一些变通方法可以让你在一定程度上用傀儡控制浏览器窗口 若你们正在做E2E测试,我仍然推荐spectron,因为这是electron网站上列出的 您将需要电子版的木偶演员和木偶演员核心 const { BrowserWindow, app } = require("electron") const pie = require

可能吗?某处有导游吗?基本上,我想对一个电子应用程序进行E2E测试,并编写用户交互脚本,即制作一个“机器人”或“傀儡”用户,在电子应用程序内部进行交互。

编辑:已经6个多月了,有一些变通方法可以让你在一定程度上用傀儡控制浏览器窗口

若你们正在做E2E测试,我仍然推荐spectron,因为这是electron网站上列出的

您将需要电子版的
木偶演员
木偶演员核心

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();
目前还有其他实验解决方案可用,但不能保证与所有的木偶API一起使用


先前的答复如下:

与木偶演员无关,但Electron有spectron,它允许您使用chrome驱动程序测试Electron应用程序,直接访问他们的和

Spectron是建立在ChromeDriver和Webdrivero之上的。因此,如果您已经在使用Puppeter,那么语法和用法会很熟悉

快速启动光谱仪 快速启动的命令

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)

我正在考虑使用Spectron,但对Puppeter很好奇,这样就可以在已经使用Puppeter的其他项目中重复使用Puppeter代码。你能列出它们吗?它们目前只是各种私人项目,不是开源项目。他们不使用电子,只是网络应用。木偶剧不是为电子制作的,我也没有发现有人用木偶剧来嘲弄电子。Spectron是为电子而设计的,我发现有大量的资源用于此。我不应该和斯派克伦一起去吗?