Я начинаю автоматизировать набор тестов для мобильного приложения, написанного на NativeScript (раньше это было гибридное приложение Cordova), и найти некоторые элементы становится все труднее.
Я пытаюсь найти виджет TextView, который находится за пределами видимого пространства экрана (область просмотра AKA), с помощью UiSelector:
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"CFT\")")
private MobileElement labelCFT;
Когда я пытаюсь взаимодействовать с таким элементом, результатследующее сообщение:
org.openqa.selenium.NoSuchElementException: Can't locate an element
by this strategy: By.chained({By.AndroidUIAutomator:
new UiSelector().textContains("CFT")})
Логический вывод состоит в том, что элемент не существует или моя стратегия локатора неверна.Но вот в чем дело, когда я изменяю текст для поиска элемента, который находится внутри видимого пространства / области просмотра , локатор работает безупречно.Пример:
@AndroidFindBy(uiAutomator = "new UiSelector().textContains(\"loans\")")
private MobileElement labelCFT;
А потом:
public void whatText() {
System.out.println("Text of the label: " + labelCFT.getText());
}
Я получаю правильный «Текст метки: это ваши кредиты».
Видимо, это ограничениеUiSelector или, по крайней мере, как Appium работает с ним.
Единственный вариант, который я представляю, - это прокрутить весь экран и затем вызвать @AndroidFindBy, а затем повторять, пока не останется прокрутки.
Предполагается ли так, что работают UiSelector и textContains ()?Это другое решение для этого?
Большое спасибо.