如何运行 并行测试多个设备?

How to run a test on multiple devices in parallel?

无论如何我都无法运行在多台设备上执行一个测试脚本。

我从某个站点提取了一个测试 apk 和测试脚本作为示例,它在应用程序中找到一个文本框,然后在其中输入 "Hello World!",然后脚本就完成了。我现在正在尝试在两个设备上测试脚本。我创建了四个批处理脚本,其中两个 运行 两个具有不同参数的 appium 服务器实例,另外两个 运行 两个具有不同参数(包括功能)的测试脚本实例。

构建批处理文件:

运行-servers.bat

start "Appium Server 1" appium -p 5000 -bp 5100 --session-override
start "Appium Server 2" appium -p 5001 -bp 5101 --session-override

(我不知道--session-override到底是干什么的,网上没有详细的描述,不管有没有,结果都是一样的)

运行-testscript.bat

start "Test 1" node testing.js 5000 9 Emulator-9 emulator-5554
start "Test 2" node testing.js 5001 7 Emulator-7 emulator-5556

(脚本文件后的额外参数为:

<Port> <Android-Version> <Device Name> <Unique ID>)

和脚本:

const driver = require("webdriverio");
const args = process.argv;

const caps = {

    port: parseInt(args[2]),
    capabilities: {

        platformName: "Android",
        platformVersion: args[3],
        deviceName: args[4],
        app: "D:/Node/Appium/Test/apk/ApiDemos-debug.apk",
        appPackage: "io.appium.android.apis",
        appActivity: ".view.TextFields",
        automationName: "UiAutomator2", 
        uniqueID: args[5]
    }
};

async function test(caps) {

    const client = await driver.remote(caps);

    const field = await client.$("android.widget.EditText");
    await field.setValue("Hello World!");
    const value = await field.getText();
    assert.equal(value, "Hello World!");

    await client.deleteSession();
}

test(caps);

当我 运行 两个测试实例时,应用程序在两台设备上启动,但在一台设备上它不输入 "Hello World!" 而在另一台设备上输入。无输入设备所在的服务器上也有"ECONNRESET: A server-side error occurred blah-blah"

您需要在 Appium 配置中添加 systemPort。为每个设备使用不同的 systemPort 值(例如,82018202 等)。

请阅读Appium Desired Capabilities