我进行了如下测试:
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/