Appium Запуск тестов параллельно на iOS Android

Денис, это не лог, а только стектрейс. Чтобы попытатся вам помочь - мне надо увидеть полный лог запуска тестов.

Привіт
А sustemPort у вас для кожного пристрою свій унікальний?
Appium Pro: Running Multiple Appium Tests in Parallel - раджу перечитати цю статтю від Jonathan Lipps.
По великому рахунку для кожного пристрою Appium тестам потрібно 3 порти (server port, driver port та web port), але це якщо hybrid application і для ios/android.
З повагою,
Олексій

Привет
Спасибо за совет.

Да, используются уникальные порты.

у него не создаеться новий инстанс для каждого потока, в том то и проблема)

driver = new AppiumDriverFactory().getDriver(platformName, new URL(serverUrl), capabilities); просто колаеться для одного и того же driver обьекта столько раз сколько средов

Тест:

public class MyTestCase extends MyTestBase{

    @Test
    public void test1() {
        System.out.println("Thread: " + Thread.currentThread().getId() + ", driver id: " + getDriver());
        int addValue = new Random().nextInt(100);
        System.out.println("Adding " + addValue + " to driver in thread " + Thread.currentThread().getId());
        setDriver(getDriver() + addValue);
        System.out.println("Thread: " + Thread.currentThread().getId() + ", driver id: " + getDriver());
    }

}

class MyTestBase {

    private int driver;

    @BeforeClass
    public void setup() {
        driver = new Random().nextInt(100);
    }

    protected int getDriver() {
        return driver;
    }

    protected void setDriver(int driver) {
        this.driver = driver;
    }

}

testng.xml:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="demoqa" parallel="tests">

    <test name="1">
        <classes>
            <class name="common.MyTestCase"/>
        </classes>
    </test>

    <test name="2">
        <classes>
            <class name="common.MyTestCase"/>
        </classes>
    </test>
</suite>

Output:

Thread: 14, driver id: 84
Thread: 13, driver id: 29
Adding 94 to driver in thread 14
Adding 32 to driver in thread 13
Thread: 14, driver id: 178
Thread: 13, driver id: 61

Вывод: для каждого потока создается свой отдельный и независимый инстанс драйвера.

1 лайк

Так, всё решилось с помощью запуска через Selenium Grid. Так как в данной задаче было 2 эмулятора, создаем 2 appium сервера через node(Перед этим настраиваем их под ваш проект). Указываем разные порты эмуляторам при запуске серверов.

appium --nodeconfig /path/to/nodeconfig.json -p 4723 --suppress-adb-kill-server --bootstrap-port 4823 --chromedriver-port 4923 -U emulator-5556

appium --nodeconfig /path/to/nodeconfig.json -p 4724 --suppress-adb-kill-server --bootstrap-port 4824 --chromedriver-port 4924 -U emulator-5554

После раним тесты)

Отдельное спасибо @Pavlo_Bida за помощь в решении этой задачи.

1 лайк

а для чего прописывать chromedriver-port для тестов андроида и ios?