В моем тесте у меня есть текстовое поле с уже существующим текстом. Я хочу удалить содержимое и ввести новую строку.
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
был reset, и у меня был провал. Мое решение не очень хорошо работает с тестированием CI. Как это можно решить, чтобы быть более универсальным?