在我的测试中,我有一个带有预先存在的文本的文本字段。我想删除内容并键入一个新的字符串。
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)
但它非常脆弱。从模拟器退出后 Toggle software keyboard
被重置,我得到了一个失败的测试。我的解决方案在 CI 测试中不能很好地工作。如何才能解决这个问题,使其更具普遍性?