我们正在寻找为我们的桌面工作开发特定网站自动化的ElectronJS应用程序,其中包括登录,表单填写,报告下载等常见任务。
我们已经尝试过ElectronJS,Spectron,NightmareJS,Puppeteer等的基本教程,所有这些都可以单独工作,但是很少有文档(尽管开放的github问题)可以相互集成。
我们希望实现以下目标:
session
)不应该在关闭ElectronJS应用程序时删除,并且应该在重新启动应用程序时可用。browserWindow
我们不需要无头自动化,在场景后面会发生一些魔术。我们只需要在当前页面上基于菜单/按钮单击的操作/任务。
NightmareJS
,Puppeteer
等似乎都开始自己的网页实例(因为它们是为测试独立应用而构建的)但我们需要的是现有BrowserWindows
的自动化。
puppeteer
或nightmarejs
是否是正确的工具?如果是,任何文件?
或者,我们是否应该在控制台中注入我们自己的本地JS事件,如mouseclick
等事件来执行操作?
你可以使用puppeteer-core
。 core
版本默认不下载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
Spectron是电子构建应用的最佳匹配。
您可以访问所有电子API。我们只能通过光谱启动和停止您的应用。
我们可以运行打包应用程序或甚至包装。
您可以使用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);
希望这对你有所帮助。