Как программно коснуться точки на клавиатуре iOS
Я использую KIF для автоматизации своего приложения и пытаюсь автоматизировать ввод чего-либо в UISearchBar
и в поисках этого. К сожалению, я не смог найти удовлетворительный способ сделать это, программно нажав на кнопку поиска после того, как я ввел свой текст поиска.
Поэтому вместо этого я решил просто использовать метод tapScreenAtPoint в KIF. Проблема с этим методом заключается в том, что он делает следующее:
CGPoint windowPoint = [window convertPoint:screenPoint fromView:nil];
view = [window hitTest:windowPoint withEvent:nil];
Он ожидает, что касание фактически коснется вида... и поскольку клавиатура, очевидно, не является видом, этот тест не сможет вызвать кнопку поиска на клавиатуре.
Как программно нажать кнопку на клавиатуре? Я думаю, что это было бы очень полезно для любого пакета автоматизации тестирования.
2 ответа
Похоже, вы пытаетесь нажать кнопку "Поиск" на клавиатуре. Метки доступности на ключах возврата не соответствуют каким-либо нормальным шаблонам. Заглянув в инспектор специальных возможностей, вы увидите "ПОИСК", но это может быть несовместимо со всеми версиями ОС.
Обновить
Вы можете вызвать кнопку поиска, добавив \n
на ваш enterText...
[tester enterTextIntoCurrentFirstResponder:@"query\n"];
Правильный способ заключается в использовании:
[tester clearTextFromAndThenEnterText:@"sample test" intoViewWithAccessibilityLabel:@"SearchField"];
[tester waitForViewWithAccessibilityLabel:@"search"];
[tester tapViewWithAccessibilityLabel:@"search"];
Метка доступности для ключа возврата - "поиск", в этом случае вы можете проверить это с помощью приложения инспектора доступности.
Но будьте осторожны, клавиша возврата (поиск / готово / возврат / что угодно) не будет нажата, если вы добавляете текст, заканчивающийся заглавными буквами, например:
"образец теста"
Кнопка "shift" будет нажата, а кнопка "return" - нет, даже если вы попытаетесь использовать метод "tapScreenAtPoint".
Это случилось со мной и долго сводило меня с ума, пока я не понял, что на самом деле происходит.