Я использую пакеты AppiumDriver и MobileElement java (я пишу Kotlin) для тестирования пользовательского интерфейса приложения iOS, в котором уже есть тесты, написанные с использованием XCUITest.
Мне нужен функция, которая ведет себя так же, как XCUIElement.exists (), действует в XCUITest. Это была бы функция, которая возвращает true, если рассматриваемый UIElement присутствует на экране независимо от того, является ли он видимым / активируемым . Примером этого является элемент пользовательского интерфейса, встроенный в представление прокрутки, которое находится вне поля зрения (не прокручивается до). Он находится на странице, но он не виден и не является хитблатом.
Сейчас у меня есть скроллвью с элементами пользовательского интерфейса вне поля зрения, что программа будет зависать в ожидании их видимости, пока я не прокручиваю скроллвью вручную. чтобы увидеть их, которые в этот момент пройдут тесты.
Я могу подтвердить, что MobileElement .->
isDisplayed()
(это ведет себя больше как isHittable (), чем существует () из того, что я видел)
isEnabled()
isSelected()
Все не делают то, что я хочу, и ничего не делает в соответствии с:
driver.findElements(By.xpath("value")).size() != 0
Вышеприведенная строка, кажется, возвращает true в тех же самых случаях, что и isDisplayed, если я не ошибаюсь.
РЕДАКТИРОВАТЬ: Некоторые пользователи предположили, что элементы могут не существует еще из-за отложенной загрузки, и именно поэтому строка driver.findElements(By.xpath("value")).size() != 0
не работает. В ответ на это я добавил изображение div, представляющего представление прокрутки в приложении iOS. Выделенный элемент пользовательского интерфейса по-прежнему не может быть найден, пока пользователь не прокрутит его вручную, чтобы сделать его видимым до истечения времени ожидания запроса.
![enter image description here](https://i.stack.imgur.com/oNwXz.png)