Автоматизация тестирования iOS UX UISearchController

#ios #testing #automated-tests

Вопрос:

У меня есть UISearchController, который добавляется в элемент навигации:

 let searchController = UISearchController(searchResultsController: nil) ... searchController.searchBar.accessibilityIdentifier = "SearchBar" navigationItem.searchController = searchController  

Я пытаюсь написать тесты UX, которые вводят текст в строку поиска. Независимо от того, что я пытаюсь, я получаю «Не удалось синтезировать событие: ни элемент, ни какой-либо потомок не имеет фокуса клавиатуры».

Общий код в тесте выглядит следующим образом:

 let searchField = searchField["SearchBar"] _ = searchField.waitForHittability(timeout: standardTimeout) searchField.focusAndType("Test")  

Вещи, которые я пробовал:

  1. Вызов нажмите перед focusAndType. Симулятор показывает, что панель поиска фокусируется, но все равно не печатает.
  2. Добавление текстового поля в мой пользовательский интерфейс и то же самое для добавления текста в текстовое поле. Это прекрасно работает.
  3. Установите идентификатор специальных возможностей в поле Текст поиска и попробуйте сосредоточиться на нем. Это не работает.

Это говорит мне: вероятно, это не проблема с аппаратной клавиатурой, так как я могу вводить текст в текстовом поле. Кроме того, я знаю, что получаю правильный компонент поиска, потому что я могу нажать на него и следить за фокусом.

У кого-нибудь есть какие-либо советы о том, как справиться с этим с помощью UISearchController?