Выбор элемента в Appium / Android с Python, который имеет тот же класс и тот же индекс, что и другой элемент в UIAutomatorViewer

Я тестирую приложение, и на большинстве экранов я вижу, что есть элементы с одинаковым классом "android.widget.TextView" с таким же индексом "0". Все остальные свойства тоже одинаковые, единственными исключениями являются "текст" и "связанный".

У меня есть "Пропустить", "Далее" и "Пропустить следующие 3" в качестве текстов на экране, который имеет тот же атрибут, кроме атрибута text и bounds. Мне нужно знать, как я могу указать appium, чтобы щелкнуть по нужному элементу.. скажем, я хочу нажать "Далее", как я могу это сделать. Я использую Python для сценариев.

3 ответа

Решение

Вы можете найти все подходящие веб-элементы с одинаковым именем класса, что вернет вам список соответствующих элементов. Затем вы перебираете найденные элементы и сравниваете их текст, например:

for element in webdriver.find_elements_by_class_name('android.widget.TextView'):
     if element.text == "Next":
          element.click()

Выполнение, как сказал Чук Ултима, будет работать, но если у вас много TextView, это может занять некоторое время.

Ты можешь использовать:

((AndroidDriver<MobileElement>)driver).findElementByAndroidUIAutomator("new UiSelector().text(\"Next\")");

Смотрите больше использования в http://www.automationtestinghub.com/uiselector-android/

Что ж, в моем случае я наконец-то решил проблему, используя обход узлов, как я создал xpath, чтобы получить текст (значение времени) из определенного места, например так:

Time = self.driver.find_element_by_xpath('//android.widget.LinearLayout[@index=2]/android.view.ViewGroup[@index=0]/android.view.ViewGroup[@index=0]/android.view.ViewGroup[@index=0]/android.view.ViewGroup[@index=3]/android.view.ViewGroup[@index=0]/android.widget.TextView[@index=0]').get_attribute('text')

Я понимаю, что это утомительный процесс, но пока это решение для меня.

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