跳到主要内容

Electron 服务

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


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

通过丰富的 WebdriverIO 生态系统实现跨平台 Electron 应用 E2E 测试。

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 capability,例如:

wdio.conf.ts

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

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

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

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

wdio.conf.ts

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

请参阅配置文档,了解如何为 Electron 支持的不同操作系统找到 appBinaryPath 值。

或者,您可以通过提供 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 for Testing 下载 Chromedriver,它只提供 v115 或更新版本的 Chromedriver。

文档​

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

开发​

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

示例集成​

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

支持​

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

Electron 服务讨论论坛的活跃度比 WDIO 的要低,但如果您遇到的问题特定于 Electron 或使用该服务,您可以在这里开启讨论。

Welcome! How can I help?

WebdriverIO AI Copilot