Элемент поиска Appium с помощью XPath - два элемента имеют одинаковый xpath

У меня проблема с тестированием новостей ... Мне нужно получить атрибут getAttribute ("name") со страницы в приложении, чтобы я мог сравнить заголовок новостей. Чтобы найти этот заголовок, я использовал:

String storyTitle = driver.findElementByXPath("//android.view.View[@index ='1']").getAttribute("name");

Но есть проблема, потому что над этим заголовком есть другой элемент с таким же xpath, и я получаю его содержимое вместо того, которое мне нужно.

Вот вид этих элементов UIAutomator:

Что я получаю

Контент, который я хотел бы получить

Мне нужно взять этот заголовок в content-desc from element, чтобы я мог сравнить его с заголовком на предыдущем экране, который я вытащил из новостей, но я не знаю, как пропустить первый элемент и перейти ко второму, потому что у них все параметры одинаковы, exepc content-desc, и я не могу это использовать. Любая помощь?


person Boky    schedule 17.11.2014    source источник


Ответы (1)


Используйте findElementsByXPath и получите атрибут "name" необходимого вхождения элемента, в вашем случае его 2-го вхождения - get(1).

String storyTitle = driver.findElementsByXPath("//android.view.View[@index ='1']").get(1).getAttribute("name");
person Surya    schedule 18.11.2014
comment
Спасибо за ответ, но у меня проблема. Когда я помещаю эту строку, я получаю ошибку для этой строки кода od: метод get (int) не определен для типа WebElement. Если я выберу Добавить приведение к приемнику метода, я получаю сообщение об ошибке: метод get (String) в типе RemoteWebDriver неприменим для аргументов (int). Та же ошибка возникает, если я решу передать ее в WebDriver вместо RemoteWebDriver :( - person Boky; 18.11.2014
comment
Хорошо. Не могли бы вы опубликовать обновленный код? Надеюсь, вы используете findElementsByXPath (он предоставит вам список элементов). - person Surya; 18.11.2014
comment
Извините, Сурья, моя ошибка - проблема заключалась в том, что я использовал findElementByXPath вместо findElementsByXpath, как вы написали :) Я попробовал, и это работает как шарм .. просто нужно обрезать текст, добавленный приложением в конце второго заголовка, но это решило мою проблему :) Еще раз спасибо! :) - person Boky; 18.11.2014