Всем доброго дня.
У меня возникла неприятная ситуация
После перехода на хранение локаторов базе данных, мне пришлось во многих местах использовать методы findElement и findElements.
Всё это имеет вид наподобие:
if (!elementPath.equals("")){
List elementFound = driverCommands.findElements(By.xpath(elementPath));
if (elementFound.size() == 0){
return null;
}
return (AndroidElement) elementFound.get(0);
}
и
driverCommands.findElement(By.xpath(elementPath));
Проблема заключается в том что я ничего не нахожу по данным методам, даже если элемент есть на экране.
Если добавить ожидание, как на примере приведённом ниже, то элемент находится, но это уж совсем плохой вариант
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!elementPath.equals("")){
List elementFound = driverCommands.findElements(By.xpath((elementPath));
if (elementFound.size() == 0){
return null;
}
return (AndroidElement) elementFound.get(0);
}
Сама проблема, как я предполагаю, берёт свои корни из того что дерево элементов на андроиде строится весьма небыстро.
Хочу спросить сталкивался кто-нибудь с таким и как решал подобную проблему.