Это с Robot Framework, работающим с Appium версии 1.5.04 на физическом устройстве Android с контекстом устройства, установленным на NATIVE_APP
Шаги для воспроизведения: использование отношения xpath, где элемент, который мы хотим ( button) является дочерним элементом View, в котором есть несколько сущностей Views на одном уровне
Производный xpath: xpath = //[@class='android.widget.Button 'и. /parent::[(./preceding-sibling::* | ./following-sibling::*)[contains(@contentDescription,'Sticky')]]]
Этот xpath предназначен действовать на кнопку Button, являющуюся дочерним элементом элемента View, который содержит имя «Sticky»
Я обнаружил, что следующее ключевое слово Click Element работает нормально (находит и щелкает элемент)
Например:
Wait Until Keyword Succeeds 5x 3 sec Click Element xpath= //*[@class='android.widget.Button' and ./parent::*[(./preceding-sibling::* | ./following-sibling::*)[contains(@contentDescription,'Sticky')]]]
Однако, любое из условных ключевых слов, например: (Я не всегда хочу нажимать на элемент, просто посмотреть, есть он там или нет)
Element Should Be Visible xpath= //*[@class='android.widget.Button' and ./parent::*[(./preceding-sibling::* | ./following-sibling::*)[contains(@contentDescription,'Sticky')]]]
(используется тот же xpath)
выдает ошибку: ValueError: Element locator with prefix '//*[@class' is not supported
У меня три изменил значения других элементов (например, ContentDescription) с тем же результатом. К сожалению, этот конкретный элемент не имеет назначенного идентификатора.
Есть ли другой синтаксис xpath, который я должен использовать, или другое ключевое слово, которое лучше подойдет?