【发布时间】:2016-01-12 11:22:01
【问题描述】:
我有一个 UI 测试,其中涉及解除系统生成的 UIAlertController。此警报要求用户授予访问设备日历的权限。测试的目标是点击OK 按钮后的行为:
1 let app = XCUIApplication()
...
// this code was basically generated by the recording feature of XCode 7
2 app.alerts.elementBoundByIndex(0).collectionViews.buttons["OK"].tap()
现在,第 2 行不是单击 OK 按钮,而是让模拟器点击第一个按钮,恰好是 Cancel 按钮...
此外,我发现测试框架无法准确识别出现的警报。因此,如果我检查当前的警报计数,我总是得到 0:
// ...tap...
let count = app.alerts.count // == 0
如果我使用NSPredicate 作为条件并等待几秒钟,也会发生这种情况。
UI 测试是否可能无法可靠地处理系统生成的警报?我正在使用 XCode 7.0.1。
【问题讨论】:
-
通过 UI 测试与系统警报交互是 known bug/issue。
-
天啊! XCode 7 错误检测之旅似乎是一个永无止境的故事......
-
不再是了,哇!查看my answer below。 :-)
标签: xcode7 uialertcontroller ui-testing xcode-ui-testing