首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多个设备上并行运行测试?

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

Stack Overflow用户
提问于 2019-11-10 11:44:35
回答 1查看 699关注 0票数 0

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

我有一个测试apk和测试脚本从某个网站作为一个例子,在应用中找到一个文本框,然后输入"Hello!“然后脚本就完成了。目前,我正试图在两个设备上测试这个脚本。我创建了四个批处理脚本,其中两个运行两个具有不同参数的appium服务器实例,另两个运行具有不同参数(包括功能)的测试脚本的两个实例。

批处理文件的构造:

run-servers.bat

代码语言:javascript
复制
start "Appium Server 1" appium -p 5000 -bp 5100 --session-override
start "Appium Server 2" appium -p 5001 -bp 5101 --session-override

(我不知道--session-override应该做什么,因为在互联网上对它的描述中没有包含详细的内容,但是不管有没有,都会发生相同的结果)。

run-testscript.bat

代码语言:javascript
复制
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>)

剧本:

代码语言:javascript
复制
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!“而在另一种情况下。也有"ECONNRESET:服务器端错误发生了blah“在服务器上,设备没有输入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-14 18:45:32

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

请阅读Appium所需的能力

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58788316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档