Ошибка поиска элемента с использованием uiautomatorviewer, appium и python

Скриншот UIAUTOMATORVIEWER

Я пытаюсь написать код Python для проверки наличия .mp3 и соответствующего файла .json в раскрывающемся списке.

dropboxmp3txt = self.driver.find_element_by_xpath('//android.widget.ListView/android.view.View/android.widget.TextView[contains(@index, "1")]')
print dropboxmp3txt.text

Это дает мне вывод:

abc2016-05-05, 10.38.26.mp3 Что прекрасно!!!

Мне нужен аналогичный xpath, чтобы найти текст .json. Тот, что ниже .mp3 на рисунке.

Я пытался сделать:

dropboxmp3txt = self.driver.find_element_by_xpath('//android.widget.ListView/android.view.View[0]/android.widget.TextView[contains(@index, "1")]')
print dropboxmp3txt.text
dropboxjsontxt = self.driver.find_element_by_xpath('//android.widget.ListView/android.view.View[1]/android.widget.TextView[contains(@index, "1")]')
print dropboxjsontxt.text

Но это дало мне ошибку:

Traceback (most recent call last):
  File "dropboxshare.py", line 136, in test_1_view_checkbox
    dropboxtxt = self.driver.find_element_by_xpath('//android.widget.ListView/android.view.View[0]/android.widget.TextView[contains(@index, "1")]')
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 258, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 712, in find_element
    {'using': by, 'value': value})['value']
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 201, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/appium/webdriver/errorhandler.py", line 29, in check_response
    raise wde
NoSuchElementException: Message: An element could not be located on the page using the given search parameters.

Для двух текстов не указан идентификатор. Единственное, что уникально в обоих случаях, это расширение (.mp3 и .json)..

Как я могу получить эти 2 текста ??

Тексты abc2016-05-5,10.38.26.mp3 и abc2016-05-5,10.38.26.json не могу ввести напрямую.. типа: xpath("//android.widget.ListView/android.view.View/android.widget.TextView[@index='1' and @text='abc2016-05-05, 10.38.26.mp3' ]") xpath("//android.widget.ListView/android.view.View/android.widget.TextView[@index='1' and @text='abc2016-05-05, 10.38.26.json' ]")

Потому что некоторые другие .mp3 и .json могут появиться во время следующего запуска и занять это место.. Они меняются во время выполнения.. Сначала мне нужно знать, какой текст присутствует в этом месте. Как я могу получить его .. ЛЮБАЯ ИДЕЯ ???


person Karthik    schedule 05.05.2016    source источник


Ответы (1)


Xpath, который вы пытаетесь использовать, может конфликтовать. Попробуйте с //android.widget.ImageView/../android.widget.TextView[1]

Он вернет два элемента, поэтому используйте find_elements_by_xpath

person pr4bh4sh    schedule 05.05.2016
comment
@Karthik: я считаю, что pr4bh4sh предлагает создать и использовать List подобных элементов. - person Naman; 05.05.2016
comment
List <WebElement> counter = driver.findElements(By.id("com.android.textview")); for(int index= 0 ; index < counter.size() ;index++) { System.out.println(counter.get(index).getText()); } Что-то подобное в JAVA верно?!! - person Karthik; 06.05.2016