Как я могу найти NativeScript TextField с Appium на Android? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь настроить автоматические тесты e2e, используя nativescript-dev-appium.Я не могу понять, как найти TextField при запуске приложения NativeScript через Appium на Android.Я использую tns-core-modules v5.2.1 и nativescript-angular 7.0.2.

Единственное свойство элемента NativeScript, которое я могу найти, которое, как мне кажется, для автоматических тестов по поиску элементов, - automationText.Когда я устанавливаю automationText на iOS, я могу найти текстовое поле с помощью драйвера Appium driver.findElementByAutomationId или driver.findElementByAutomationText.Однако в Android ни один из этих методов не возвращает нужный элемент.findElementByAutomationId не работает вообще (я думаю, что идентификаторы автоматизации могут быть специфичны для iOS), а findElementByAutomationText возвращает метку рядом с моим TextField, а не сам TextField.

Мое фактическое представление имеет довольнонесколько текстовых полей, но вот основная идея:

<StackLayout>
  <Label text="Name"></Label>
  <TextField automationText="Name" ...></TextField>
</StackLayout>

Затем, в моем тесте e2e, я хочу сделать это

const nameInput = await driver.findElementByAutomationText("Name") // Returns the Label and not the TextField

Так как findElementByAutomationText, кажется, ищет элементы поТекст, а не AutomationText на Android, какой самый надежный способ найти мой TextField при выполнении моих тестов?Предпочтительно, я бы хотел кроссплатформенное решение, чтобы мне не приходилось использовать разные стратегии поиска на iOS и Android.

1 Ответ

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

Почему вы не можете попросить разработчика установить идентификатор локатора для данного компонента и использовать приведенный ниже фрагмент.

await driver.findElementById("#name");

Я вижу, что у вашего компонента нет локатора, который также является надежным ....

...