2016-10-19 5 views
0

Я использую XCTest для тестирования своего приложения IOS. Как часть тестового примера мне нужно ввести число в поле (, которое не является текстовым полем) Когда я записываю тест, следующий код генерируется, когда я использую мягкую клавиатуру на симуляторе (IPAD/IPhone)Как имитировать мягкую клавиатуру на симуляторе IOS?

app.staticTexts["0"].tap() //Line 1 
app.typeText("23")   //Line 2 

когда я выполнить тест, экранная клавиатура появляется после того, как линия 1. Но когда линия 2 выполняется, следующая ошибка появляется

UI тестирование Failure - ни элемент, ни какой-либо потомок имеет фокус клавиатуры

Мое приложение должно быть установлен на IPad/IPhones. Поэтому мне нужно, чтобы он выполнялся только по маршруту мягкой клавиатуры.

Так что я думаю, что typeText - неправильный метод. Каков метод имитации кликов на мягкой/виртуальной клавиатуре в симуляторе IOS?

+0

Когда выполняется 'app.staticTexts [" 0 "]. Tap()', появляется мягкая клавиатура. Перед тем, как эта строка будет выполнена, нет мягкой клавиатуры. Далее, если я введу точку останова в строке 2 и вмешаюсь вручную, чтобы щелкнуть по мягкой клавиатуре, я вижу введенное значение. Вот почему я спрашиваю, есть ли способ имитировать щелчок мягкой клавиатуры. – user2697620

ответ

0

Вам нужно позвонить typeText() на элемент с фокусом клавиатуры, а не только app.

Если элемент был текстовым полем, вы найдете элемент текстового поля и вызовите typeText().

let element = app.textFields["myTextField"] 
element.typeText("23") 

Вам нужно будет заменить запрос своим собственным, чтобы найти элемент с фокусом клавиатуры. Обычно это будет потомком UITextField, но вам нужно будет использовать более настраиваемый запрос, если вместо этого вы используете пользовательский вид.

Смежные вопросы