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, а затем остальные не работали.

Другие вопросы по тегам