В моем тесте у меня есть текстовое поле с уже существующим текстом. Я хочу удалить содержимое и ввести новую строку.UI Test, удаляющий текст в текстовом поле
let textField = app.textFields
textField.tap()
// delete "Old value"
textField.typeText("New value")
При удалении строки с аппаратной клавиатурой Запись не генерирует для меня ничего. После того, как делать то же самое с программной клавиатурой я получил:
let key = app.keys["Usuń"] // Polish name for the key
key.tap()
key.tap()
... // x times
или
app.keys["Usuń"].pressForDuration(1.5)
Я был обеспокоен тем, что мой тест зависит от языка, так что я создал что-то вроде этого для моих поддерживаемых языков:
extension XCUIElementQuery {
var deleteKey: XCUIElement {
get {
// Polish name for the key
if self["Usuń"].exists {
return self["Usuń"]
} else {
return self["Delete"]
}
}
}
}
Это выглядит лучше в коде:
app.keys.deleteKey.pressForDuration(1.5)
но очень хрупкий. После выхода из Simulator Toggle software keyboard
был сброшен, и у меня был провал. Мое решение не очень хорошо работает с тестированием CI. Как это можно решить, чтобы быть более универсальным?
Я не могу воспроизвести неудачу, с которой вы столкнулись. Я добавил то же расширение, переключил язык своего симулятора на польский и проверил, что ключ «Usún» получает прослушивание. Перезапуск/сброс симулятора, похоже, не влияет на настройку «Toggle software keyboard». Есть ли что-то еще в текстовом представлении, которое может скрывать/отклонять клавиатуру? –
Возможно, после перезагрузки системы у меня перезагрузилась клавиатура «Toggle software keyboard». Это не по умолчанию для симулятора (и я не знаю, можно ли это изменить). Этот способ или другой метод не является надежным, пока вы не сможете исправить языковые и программные настройки клавиатуры с уровня теста (или схемы тестирования). –
Мой собственный комментарий дал мне представление, и я нашел настройки языка в Scheme> Options> Application Language. Проблема с клавиатурой по-прежнему остается нерешенной. –