#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")
Вещи, которые я пробовал:
- Вызов нажмите перед focusAndType. Симулятор показывает, что панель поиска фокусируется, но все равно не печатает.
- Добавление текстового поля в мой пользовательский интерфейс и то же самое для добавления текста в текстовое поле. Это прекрасно работает.
- Установите идентификатор специальных возможностей в поле Текст поиска и попробуйте сосредоточиться на нем. Это не работает.
Это говорит мне: вероятно, это не проблема с аппаратной клавиатурой, так как я могу вводить текст в текстовом поле. Кроме того, я знаю, что получаю правильный компонент поиска, потому что я могу нажать на него и следить за фокусом.
У кого-нибудь есть какие-либо советы о том, как справиться с этим с помощью UISearchController?