跳至主要内容

Electron 服务

wdio-electron-service 是一个第三方包,更多信息请参见GitHub | npm


用于测试 Electron 应用程序的 WebdriverIO 服务

通过广泛的 WebdriverIO 生态系统实现 Electron 应用程序的跨平台端到端测试。

Spectron 的精神继承者 (Spectron) (RIP).

特性

通过以下方式使测试 Electron 应用程序变得更加容易

  • 🚗 自动设置所需的 Chromedriver(适用于 Electron v26 及更高版本)
  • 📦 自动检测 Electron 应用程序的路径
  • 🧩 在测试中访问 Electron API
  • 🕵️ 通过类似 Vitest 的 API 模拟 Electron API

安装

您需要安装 WebdriverIO,说明请参见此处

快速入门

推荐的快速入门方法是使用WDIO 配置向导

手动快速入门

要开始不使用配置向导,您需要安装服务和 @wdio/cli

npm install --dev @wdio/cli wdio-electron-service

或者使用您选择的包管理器 - pnpm、yarn 等。

接下来,创建您的 WDIO 配置文件。如果您需要一些灵感,此存储库的示例目录中有一个有效的配置,以及WDIO 配置参考页面

您需要将 electron 添加到您的 services 数组中并设置一个 Electron 功能,例如

wdio.conf.ts

export const config = {
// ...
services: ['electron'],
capabilities: [
{
browserName: 'electron',
},
],
// ...
};

最后,使用您的配置文件运行一些测试

这将以与 WDIO 处理 Chrome 或 Firefox 等浏览器相同的方式启动应用程序实例。如果您需要同时运行其他实例,例如应用程序的多个实例或应用程序和 Web 浏览器的不同组合,则该服务可与WDIO(并行)多远程一起使用。

如果您使用Electron ForgeElectron Builder打包您的应用程序,则该服务将自动尝试查找打包的 Electron 应用程序的路径。您可以通过自定义服务功能提供二进制文件的自定义路径,例如

wdio.conf.ts

export const config = {
// ...
capabilities: [
{
'browserName': 'electron',
'wdio:electronServiceOptions': {
appBinaryPath: './path/to/built/electron/app.exe',
appArgs: ['foo', 'bar=baz'],
},
},
],
// ...
};

或者,您可以通过提供 main.js 脚本的路径将服务指向未打包的应用程序。Electron 需要安装在您的 node_modules 中。建议使用 Rollup、Parcel、Webpack 等捆绑器捆绑未打包的应用程序。

wdio.conf.ts

export const config = {
// ...
capabilities: [
{
'browserName': 'electron',
'wdio:electronServiceOptions': {
appEntryPoint: './path/to/bundled/electron/main.bundle.js',
appArgs: ['foo', 'bar=baz'],
},
},
],
// ...
};

Chromedriver 配置

如果您的应用程序使用的 Electron 版本低于 v26,则您需要手动配置 Chromedriver

这是因为 WDIO 使用 Chrome 进行测试来下载 Chromedriver,它只提供 v115 或更高版本的 Chromedriver。

文档

服务配置
Chromedriver 配置
访问 Electron API
模拟 Electron API
独立模式
开发
常见问题和调试

开发

如果您有兴趣贡献,请阅读开发文档

示例集成

查看我们的Electron 样板项目,该项目展示了如何在示例应用程序中集成 WebdriverIO。您还可以查看此存储库中的示例应用程序E2E目录。

支持

如果您在使用该服务运行 WDIO 时遇到问题,您应该首先查看已记录的常见问题,然后在主要 WDIO 论坛中开启讨论。

Electron 服务讨论论坛的活跃度远低于 WDIO 论坛,但如果您遇到的问题是特定于 Electron 或使用该服务的问题,则可以在此处开启讨论。

欢迎!我怎样才能帮到您?

WebdriverIO AI Copilot