Как получить список дочерних элементов элемента в Appium?
Я работаю с родным приложением iOS через Appium.
У меня есть следующая структура:
UIAApplication ->
UIAWindow ->
UIATextBox
UIALabel
UIAWindow ->
SomethingElse
Я нашел способ получить первое UIAWindow и хотел бы получить список всех элементов в этом окне. Как я могу это сделать?
Я хотел бы получить UIATextBox и UIALabel из первого окна UIAWindow, но НЕ элемента SomethingElse.
Как мне сделать список дочерних элементов в целом?
@Test
public void testListWindows() {
List<MobileElement> windows = driver.findElementsByClassName("UIAWindow");
List<MobileElement> elements = windows.get(0).?????
}
2 ответа
Ты почти там. У вас есть список всех окон UIAW тогда, когда вам нужен список всех элементов первого окна UIAWindow. Я бы предложил использовать Xpath с подстановочным знаком.
Это даст вам каждый элемент, который является прямым потомком первого UIAWindow:
List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]/*");
И это даст вам каждый дочерний элемент, дочерний элемент, вспомогательный дочерний элемент и т. Д. Первого окна UIA:
List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]//*");
Дополнительный совет: если вы автоматизируете для iOS, я предполагаю, что это означает, что у вас есть доступ к OS X, где вы можете установить приложение Appium dot и использовать инспектор. Инспектор является отличным инструментом для проверки запросов xpath перед их внедрением в код.
Вы также можете найти текстовое поле и метку по классу приложения для iOS в Appium. Метод findElementsByClassName возвращает все элементы на текущем экране, которые соответствуют этому классу.
List<MobileElement> textFields = driver.findElementsByClassName("UIATextField");
MobileElement textField = textFields.get(0);
List<MobileElement> labels = driver.findElementsByClassName("UIAStaticText");
MobileElement label = labels.get(0);