如何自动化ElectronJS应用程序

问题描述 投票:3回答:3

我们正在寻找为我们的桌面工作开发特定网站自动化的ElectronJS应用程序,其中包括登录,表单填写,报告下载等常见任务。

我们已经尝试过ElectronJS,Spectron,NightmareJS,Puppeteer等的基本教程,所有这些都可以单独工作,但是很少有文档(尽管开放的github问题)可以相互集成。

我们希望实现以下目标:

  • 登录状态(session)不应该在关闭ElectronJS应用程序时删除,并且应该在重新启动应用程序时可用。
  • 几个菜单按钮启动一些自动化任务,如下载,填写表格等现有browserWindow

我们不需要无头自动化,在场景后面会发生一些魔术。我们只需要在当前页面上基于菜单/按钮单击的操作/任务。

NightmareJSPuppeteer等似乎都开始自己的网页实例(因为它们是为测试独立应用而构建的)但我们需要的是现有BrowserWindows的自动化。

puppeteernightmarejs是否是正确的工具?如果是,任何文件?

或者,我们是否应该在控制台中注入我们自己的本地JS事件,如mouseclick等事件来执行操作?

javascript automation electron puppeteer nightmare
3个回答
1
投票

你可以使用puppeteer-corecore版本默认不下载Chromium,如果你想控制一个Electron应用程序你不需要。

在测试中,然后调用launch方法,在其中将electron定义为可执行文件而不是Chromium,如下面的代码段所示:

const electron = require("electron");
const puppeteer = require("puppeteer-core");

const delay = ms =>
  new Promise(resolve => {
    setTimeout(() => {
      resolve();
    }, ms);
  });

(async () => {
  try {
    const app = await puppeteer.launch({
      executablePath: electron,
      args: ["."],
      headless: false,
    });
    const pages = await app.pages();
    const [page] = pages;

    await page.setViewport({ width: 1200, height: 700 });
    await delay(5000);
    const image = await page.screenshot();
    console.log(image);
    await page.close();
    await delay(2000);
    await app.close();
  } catch (error) {
    console.error(error);
  }
})();

简单的演示回购:https://github.com/peterdanis/electron-puppeteer-demo


0
投票

Spectron是电子构建应用的最佳匹配。

您可以访问所有电子API。我们只能通过光谱启动和停止您的应用。

我们可以运行打包应用程序或甚至包装。

https://electronjs.org/spectron


0
投票

您可以使用Spectron,但如果您想查看文档,Spectron正在使用具有良好文档的webdriverio

我建议你使用Spectron,因为我试图用java-selenium自动化我的测试,但它失败了一些情况。如果你想使用selenium,请写下面的代码来设置将电子app设置为chromedriver的功能。

 ChromeOptions options = new ChromeOptions();
    options.setBinary(binaryPath);
    options.addArguments("--app=" + argPath);
    options.setCapability("chromeOptions", options);
    driver = new ChromeDriver(options);   

希望这对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.