Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在多个设备上并行运行测试?_Javascript_Node.js_Webdriver Io_Appium Android - Fatal编程技术网

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

Javascript 如何在多个设备上并行运行测试?,javascript,node.js,webdriver-io,appium-android,Javascript,Node.js,Webdriver Io,Appium Android,无论发生什么情况,我都无法在多个设备上运行一个测试脚本 我有一个测试apk和测试脚本从一些网站拉作为一个例子,在应用程序中找到一个文本框,然后输入“Hello World!”,然后脚本完成。目前我正在两台设备上测试脚本。我创建了四个批处理脚本,其中两个使用不同参数运行两个appium服务器实例,另外两个使用不同参数运行两个测试脚本实例(包括功能) 批处理文件的构造: 运行servers.bat start "Appium Server 1" appium -p 5000 -bp 5100 --s

无论发生什么情况,我都无法在多个设备上运行一个测试脚本

我有一个测试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
start "Test 1" node testing.js 5000 9 Emulator-9 emulator-5554
start "Test 2" node testing.js 5001 7 Emulator-7 emulator-5556
(我不知道会话覆盖到底应该做什么,因为互联网上没有对它的详细描述,但不管有没有,都会出现相同的结果)

运行testscript.bat

start "Appium Server 1" appium -p 5000 -bp 5100 --session-override
start "Appium Server 2" appium -p 5001 -bp 5101 --session-override
start "Test 1" node testing.js 5000 9 Emulator-9 emulator-5554
start "Test 2" node testing.js 5001 7 Emulator-7 emulator-5556
(脚本文件后的额外参数为:

还有剧本:

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!”,而在另一台设备上会输入。在没有输入的设备所在的服务器上,还有“EconReset:A server-side error accurrent blah blah”。

您需要在应用程序配置中添加systemPort。为每个设备(例如8201、8202等)使用不同的systemPort


请阅读。

谢谢。我不得不自己研究一下,找到更多的解决方案,因为网上没有太多的细节。这管用!