这是我的案例:
let passwordSecureTextField = app.secureTextFields["password"]
passwordSecureTextField.tap()
passwordSecureTextField.typeText("wrong_password") //here is an error
UI测试失败-元素或任何子体都没有键盘焦点。元素:
怎么啦?这对于普通的textFields
来说工作得很好,但是只有在secureTextFields
上才会出现问题。有什么解决方法吗?
发布于 2015-12-05 02:34:05
这个问题让我痛苦万分,但我设法找到了一个合适的解决方案。在模拟器中,确保已禁用I/O -> Keyboard -> Connect hardware keyboard
。
发布于 2016-01-15 22:14:34
最近,我们发现了一个技巧,可以让接受的答案持久化。要禁用模拟器设置:I/O -> Keyboard -> Connect hardware keyboard
从命令行应这样写:
defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0
它不会影响正在运行模拟器-您需要重新启动模拟器或启动新的模拟器才能使设置生效。
发布于 2016-01-15 18:29:52
我已经写了一个很小的扩展(Swift),它非常适合我。代码如下:
extension XCTestCase {
func tapElementAndWaitForKeyboardToAppear(element: XCUIElement) {
let keyboard = XCUIApplication().keyboards.element
while (true) {
element.tap()
if keyboard.exists {
break;
}
NSRunLoop.currentRunLoop().runUntilDate(NSDate(timeIntervalSinceNow: 0.5))
}
}
}
其主要思想是在键盘出现之前不断点击一个元素(文本字段)。
https://stackoverflow.com/questions/32184837
复制相似问题