Как выбрать элемент, который является дочерним по отношению к другому элементу в Appium, используя wd и javascript? - PullRequest
0 голосов
/ 28 мая 2019

У меня есть приложение React-Native на Android с несколькими сборщиками (выпадающими списками) на экране. У меня есть accessibilityLabel, назначенный первому компоненту выбора, названному «Описание выбора», и у меня есть accessibilityLabel, назначенный второму компоненту выбора, названному «Цена выбора». Я могу найти второй компонент средства выбора на странице, используя driver.waitForElementByAccessibilityId( "Pick Price" ), но мне нужно быть в состоянии выяснить, какое текстовое значение находится в средстве выбора, то есть значение, которое было выбрано. Я использую Jest, JavaScript и WD.

Я открыл приложение с Appium Desktop и выбрал средство выбора, и я вижу, что у него есть дочерний компонент, который является android.widget.TextView с идентификатором ресурса "android: id / text1".

Если я использую driver.waitForElementByAccessibilityId( "Pick Price" ).waitForElementById( "android:id/text1" ).text();, он получает текст от первого сборщика, то есть «Описание выбора». Похоже, что он просто возвращает первый элемент с идентификатором «text1» на странице.

Как мне получить текстовое значение из компонента React-Native Picker, когда у меня есть accessibilityLabel, назначенный для компонента Picker, но нет accessibilityLabel, назначенного для TextView?

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Я обнаружил, как это сделать. Единственные методы поиска, которые могут искать в элементах, это методы elementBy... и elementsBy.... Чтобы эти методы работали с предыдущим элементом, возвращаемым в цепочке, необходимо добавить '>' в качестве первого параметра в методе. Это говорит о том, что метод должен действовать на элемент, а не на глобальном уровне. Так что для моего примера выше, вы бы использовали

driver.waitForElementByAccessibilityId("Pick Price").elementById(">", "android:id/text1").text();

Ссылки:

0 голосов
/ 29 мая 2019

Вы можете перейти к XPath selector и изменить свой код так:

driver.waitForElementByAccessibilityId( "Pick Price" ).waitForElementByXPath( ".//[@android:id/text1]" ).text();

, так что область поиска второго веб-элемента будет относиться к первому элементу.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...