如何检测键盘是不是显示在 Xcode UI 测试中
Posted
技术标签:
【中文标题】如何检测键盘是不是显示在 Xcode UI 测试中【英文标题】:how to Detect if Keyboard is shown in Xcode UI test如何检测键盘是否显示在 Xcode UI 测试中 【发布时间】:2016-01-08 19:43:31 【问题描述】:我正在新的 Xcode 7 UI 测试框架下快速编写 UI 文本。 要求是测试系统键盘是否显示在应用程序中。 有人可以告诉我如何做到这一点吗?谢谢
【问题讨论】:
顺便说一句,当我试图在键盘的调试模式下寻找可访问性时,我在应用程序中看不到它。所以我猜是因为它是系统键盘,所以我们看不到它 【参考方案1】:试试这个检查:
let app = XCUIApplication()
XCTAssert(app.keyboards.count > 0, "The keyboard is not shown")
或检查特定的键盘键,例如:
let app = XCUIApplication()
XCTAssert(app.keyboards.buttons["Next:"].exists, "The keyboard has no Next button")
您还可以控制键盘上的交互:
let app = XCUIApplication()
app.keyboards.buttons["Next:"].tap()
【讨论】:
【参考方案2】:添加两个观察者
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardVisible:", name: UIKeyboardDidShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardHidden:", name: UIKeyboardDidHideNotification, object: nil)
func keyboardVisible(notif: NSNotification)
print("keyboardVisible")
func keyboardHidden(notif: NSNotification)
print("keyboardHidden")
只要键盘可见keyboardVisible
就会被调用,只要键盘隐藏keyboardHidden
就会被调用。
【讨论】:
我在UI测试代码中添加了这个,但是不起作用 这是我的代码覆盖func setUp() super.setUp() NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardDidShow", name: UIKeyboardDidShowNotification, object: XCUIApplication())
【参考方案3】:
我发现键盘计数检查在我的一个应用程序上不起作用(即使键盘被隐藏,它也返回计数 1),所以稍微修改一下:
private func isKeyboardShown() -> Bool
return XCUIApplication().keyboards.keys.count > 0
【讨论】:
您能否将上面的答案修改为private func...
而不是private fund...
"以上是关于如何检测键盘是不是显示在 Xcode UI 测试中的主要内容,如果未能解决你的问题,请参考以下文章
创建 UITextView 时,如何在实时视图中显示的 Swift Playgrounds(在 Xcode 上)的 UI 中隐藏键盘?