我进行了如下测试:

let navnTextField = app.textFields["First Name"]
let name = "Henrik"
navnTextField.tap()
navnTextField.typeText("Henrik")
XCTAssertEqual(navnTextField.value as? String, name)


问题是,由于系统设置,默认情况下,我的iPhone Simulator具有波兰语键盘,并且“ Henrik”通过自动更正自动更改为“ ha”。

一个简单的解决方案是从iOS Settings删除波兰语键盘。但是,此解决方案无法解决问题,因为可以重置iPhone Simulator,然后测试将再次失败。

有什么方法可以在测试用例之前设置自动更正,也可以通过其他方式将文本输入到文本字段。

最佳答案

这是XCUIElement上的一个小扩展,可以完成此操作

extension XCUIElement {
    // The following is a workaround for inputting text in the
    //simulator when the keyboard is hidden
    func setText(text: String, application: XCUIApplication) {
        UIPasteboard.generalPasteboard().string = text
        doubleTap()
        application.menuItems["Paste"].tap()
    }
}


可以这样使用

let app = XCUIApplication()
let enterNameTextField =  app.otherElements.textFields["Enter Name"]
enterNameTextField.tap()
enterNameTextField.setText("John Doe", app)



感谢实施@Apan

关于uitextfield - Xcode UI测试-使用typeText()方法和自动更正键入文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32712036/

10-12 14:30