Денис, это не лог, а только стектрейс. Чтобы попытатся вам помочь - мне надо увидеть полный лог запуска тестов.
Привіт
А 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
Вывод: для каждого потока создается свой отдельный и независимый инстанс драйвера.
Так, всё решилось с помощью запуска через 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 за помощь в решении этой задачи.
а для чего прописывать chromedriver-port для тестов андроида и ios?