Appium.Использование осей Xpath в локаторе.Найти элементы родственного / родительского / дочернего / и т. Д. В контексте текущего элемента - PullRequest
0 голосов
/ 03 января 2019

Можно ли найти мобильные элементы родственного / родительского / дочернего / и т. Д. В контексте существующего мобильного элемента.Например, у меня есть базовый элемент: MobileElement mobileElement = driver.findElement (By.xpath ("// any / xpath / locator"));

Затем мне нужно найти следующий родственный элемент.В Selenium я мог бы использовать подобный код: MobileElement nextMobileElement = mobileElement.findElement ("follow-sibling :: nextelement ['любые условия']");Но в appium я получил NoSuchElementException.

Каков правильный синтаксис использования осей xpath в Appium для определения местоположения элементов определенным выше способом?

Ответы [ 3 ]

0 голосов
/ 05 января 2019

Appium поддерживает XPath, как и WebDriver.Убедитесь, что ваш XPath правильный, вы можете проверить его на appium-desktop .Following-sibling работал на меня без проблем.Если Appium не может обработать выражение XPath, вы должны получить соответствующее исключение.

0 голосов
/ 11 января 2019

Решение найдено следующим образом: Когда appium не может выбрать элемент по его имени, т.е. элементу, вы можете просмотреть его атрибут «class», и он будет содержать идентичный текст: class = "android.widget.ViewAnimator". Таким образом, вы можете создавать сложные локаторы oyur xpath на основе этого атрибута. В случае осей xpath это будет выглядеть примерно так: //some/xpath/preceding-sibling::*[@class='android.widget.ViewAnimator'].

0 голосов
/ 03 января 2019

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

mobileElement.findElement(By.xpath(".(xpath of the child element)")

Например, mobileElement.findElement (By.xpath (". // div [@ class = 'xyz']")

...