javascript - 如何在多个设备上并行运行测试?

标签 javascript node.js webdriver-io appium-android

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

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

构建批处理文件:

run-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 到底应该做什么,因为互联网上没有详细的描述,但无论有没有它,都会出现相同的结果)。

运行测试脚本.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:发生服务器端错误等等”。

最佳答案

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

请阅读Appium Desired Capabilities .

关于javascript - 如何在多个设备上并行运行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58788316/

相关文章:

javascript - Mocha 测试——完全完成 "before",然后运行 ​​ "it"s

javascript - TSconfig:为每个ts文件夹编译一个新的js文件夹

javascript - amCharts LabelFunction 不工作

c# - 从类调用寻呼

json - 在这种情况下,我应该使用 Redis 还是 MongoDB 哪个数据库?

javascript - Moment JS 在 Nodejs 中给出了错误的时间

node.js - 无法使用 google-cloud node.js 客户端插入 BigQuery

javascript - 单击表格中的特定按钮

javascript - jquery:将 4 个点排序为(左上、右上、右下、左下)

javascript - 如何使用 webdriverio 验证它是否是登录页面