Как запустить тест на нескольких устройствах параллельно? - PullRequest
0 голосов
/ 10 ноября 2019

Мне не удается запустить один тестовый скрипт на нескольких устройствах, несмотря ни на что.

У меня есть один тестовый 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 должен делать точно, так как нет описания этого наИнтернет содержит подробные, но с или без него, такие же результаты происходят).

run-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: ошибка на стороне сервера, бла-бла» на сервере, на котором включено устройство без ввода.

1 Ответ

0 голосов
/ 14 ноября 2019

Вам необходимо добавить systemPort в вашей конфигурации Appium. Используйте различные значения systemPort для каждого устройства (например, 8201 , 8202 и т. Д.).

Пожалуйста, прочитайте Желаемые возможности Appium.

...