You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Appium+WebDriverIO多设备并行但单设备内测试串行执行?

解决方案:多设备并行+单设备内测试串行

要实现你的需求,关键是给每个设备的Capability单独配置maxInstances: 1,同时全局的maxInstances设置为不小于你要并行的设备数量(这里是2)。具体配置调整如下:

1. 修改wdio.conf.js配置

export const config = {
    capabilities: [
        // Android 配置:限制该设备仅启动1个测试实例
        {
            platformName: "Android",
            automationName: "UiAutomator2",
            app: "./path/to/apk/app-debug.apk",
            deviceName: "Pixel_4_API_30",
            platformVersion: "11.0",
            maxInstances: 1 // 新增:每个安卓设备只跑1个实例,测试串行
        },

        // iOS 配置:同样限制该设备仅启动1个测试实例
        {
            platformName: "iOS",
            automationName: "XCUITest",
            deviceName: "iPhone 11",
            platformVersion: "13.5",
            app: "./path/to/app/My App Name.app",
            maxInstances: 1 // 新增:每个iOS设备只跑1个实例,测试串行
        },
    ],

    maxInstances: 2, // 全局最大实例数,设为设备数量(2),确保两个设备能同时启动
    // ...
};

2. 配置原理说明

  • 全局的maxInstances:默认是每个Capability允许的最大实例数,而非全局总实例数。之前你设为2时,每个设备的Capability会启动2个实例,导致iOS设备重复跑两次测试,而非两个设备各跑一次。
  • 给每个Capability单独设置maxInstances: 1:强制每个设备只能同时运行1个测试实例,这样该设备上的所有测试会按顺序串行执行,避免同一设备内的测试争抢控制权。
  • 全局maxInstances: 2:保证两个设备可以同时启动,实现多设备并行执行。

3. 额外注意事项

  • 确保测试用例没有硬编码设备相关的路径或配置,避免跨设备执行时出错。
  • 如果使用specs字段指定测试文件,无需额外调整,WebDriverIO会自动将测试用例分配到两个设备上并行执行,每个设备上的测试串行跑完。

内容的提问来源于stack exchange,提问作者twiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:31:34