在我的测试中,我有一个带有预先存在的文本的文本字段。我想删除内容并输入新字符串。
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测试。如何解决这个问题才更普遍?


Toggle software keyboard设置没有任何影响。文本视图中是否还有其他东西可以隐藏/关闭键盘?