getelements - Appium, не работает для нескольких элементов
Я пытаюсь получить все элементы и их значения. У меня есть таблица с несколькими предметами (IOS)
Все элементы в таблице имеют одинаковое имя, но разные значения, в то время как я пытаюсь получить элементы за одну попытку, используя
List<WebElement> l = driver.findElements(By.name(name));
а затем итерации по списку и вытягивая значение
for(int i =0; i < l.length; i++){
String val = ((MobileElement) l.get(i)).getAttribute("value");
}
Я получаю правильное значение только на первой итерации (первый элемент), все остальные возвращают пустое значение...
если я изменяю код на:
//1
List<WebElement> l = driver.findElements(driver, By.name(name));
String val = ((MobileElement) weList.get(0)).getAttribute("value");
//2
l = driver.findElements(driver, By.name(name));
val = ((MobileElement) weList.get(1)).getAttribute("value");
//3
l = driver.findElements(driver, By.name(name));
val = ((MobileElement) weList.get(2)).getAttribute("value");
Я получаю правильные значения.
Кажется, мне нужно тянуть элемент каждый раз, когда я пытаюсь получить к нему доступ. Это ошибка, или я просто что-то пропустил?
1 ответ
for(int i =0; i < l.length; i++){
if(l.get(i)).instanceOf(MobileElement)){
String val = ((MobileElement) l.get(i)).getAttribute("value");
println val;//syso in Java
} }
Это работает, потому что когда вы используете driver.findElements(By.name(name));
Вы получаете все элементы, которые соответствуют имени имени. Но когда вы используете if(l.get(i)).instanceOf(MobileElement))
U работают только с элементами, которые являются экземпляром MobileElement. Без этого возможно, что нулевой или другой странный элемент был записан в val, а затем остальные не работали.