Как программно коснуться точки на клавиатуре 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".

Это случилось со мной и долго сводило меня с ума, пока я не понял, что на самом деле происходит.

Другие вопросы по тегам