Appium не может получить данные атрибута content-desc

В приведенном ниже случае Appium правильно находит элементы по классам, но когда мы хотим манипулировать данными на основе content-desc каждого элемента, мы видим ошибку. Почему мы не можем получить атрибут для content-desc? Любые советы приветствуются.

    List<WebElement> arrayOfProperties2 = driver.findElementsByClassName("android.view.View");
    List<WebElement> propertyMarkerEle = new ArrayList<>();

    System.out.println("Found arrayOfProperties2 total: "+ arrayOfProperties2.size());

    for (WebElement property : arrayOfProperties2){
        String contentDesc = property.getAttribute("content-desc");
        if (contentDesc.contains("property"))
            propertyMarkerEle.add(property);

Ошибка: Найдено arrayOfProperties2 всего: 32
org.openqa.selenium.NoSuchElementException: Не удалось найти элемент на странице с заданными параметрами поиска. (ВНИМАНИЕ: сервер не предоставил никакой информации о трассировке стека)


person HRVHackers    schedule 25.09.2014    source источник
comment
Это может помочь, я думаю, github.com/appium/appium/issues/5142. Я считаю, что изменения в коде внесены.   -  person Naman    schedule 03.02.2016


Ответы (4)


Используй имя"

property.getAttribute("name");

person TinyTimZamboni    schedule 26.09.2014
comment
Привет, driver.findElementByXPath(android.widget.TextView[]).getAttribute(name); не получает текст атрибута из приложения.. можете ли вы сказать мне, где я ошибся в коде.. class, package и content-desc не печатаются, но оставшиеся детали узла печатаются успешно.. я не знаю, что не так.. Спасибо за аванс - person Kv.senthilkumar; 28.09.2014
comment
тогда у него может не быть описания содержания ?? - person TinyTimZamboni; 29.09.2014
comment
Опубликуйте снимок экрана из программы просмотра автоматов Google, показывающий все атрибуты. - person HRVHackers; 29.09.2014
comment
Я пробовал так: driver.findElementByXPath(android.widget.TextView[]).getAttribute(content-desc); но не удалось получить сведения о описании контента, даже есть элемент content-desc в приложении. Я не смог опубликовать снимок экрана приложения из-за ограничений политики. оставшиеся сведения об узле печатаются успешно. - person Kv.senthilkumar; 20.10.2014
comment
Точно сказать не могу. Когда вы просматриваете источник xml, видны ли там описания контента? - person TinyTimZamboni; 21.10.2014
comment
Работает для меня, спасибо! Это странно, потому что в UIAutomatorViewer значение отображается в разделе content-desc вместо имени. - person Pupper; 29.07.2016
comment
@TinyTimZamboni, не могли бы вы помочь мне понять, как найти решение для этого stackoverflow.com/questions/39484982/ - person Pankaj Nimgade; 14.09.2016
comment
@ S200 правильная строка для получения описания содержимого: contentDescription. Смотрите мой ответ ниже. Почему name тоже работает, так это потому, что он возвращается к contentDescription, если text пусто - person ibizaman; 19.02.2017

Список допустимых имен атрибутов можно найти в логические атрибуты и строковые атрибуты.

Булевы атрибуты:

  • включено
  • подлежащий проверке
  • проверил
  • кликабельный
  • фокусируемый
  • сосредоточенный
  • longClickable
  • прокручиваемый
  • выбран
  • отображается

Строковые атрибуты:

  • содержаниеОписание
  • текст
  • className
  • идентификатор ресурса

Я проверил это, используя привязки python.

Кредит принадлежит TichomirovSergey в комментарий github.

person ibizaman    schedule 03.02.2017

попробуй это:

driver.findElement(By.AccessibilityID(""));

person CLuhring    schedule 19.07.2016

text можно использовать как

driver.findElement(By.xpath("//*[@text='Remove Contact']"))

ИЛИ content-desc можно использовать как

driver.findElement(By.name("Remove Contact"))

driver.findElement(By.xpath("//*[@content-desc='Remove Contact']"))

driver.findElement(By.name("Remove Contact"))
person Alle Srinivas    schedule 24.04.2015
comment
В python content-desc не соответствует find_element_by_name. Увы! - person kiminoa; 15.10.2015