【发布时间】:2015-11-15 21:48:49
【问题描述】:
我正在使用新的 Xcode 7 UI 测试功能编写 UI 测试用例。在我的应用程序的某个时刻,我要求用户授予相机访问权限和推送通知。所以会出现两个 iOS 弹出窗口:"MyApp Would Like to Access the Camera" popup 和 "MyApp Would Like to Send You Notifications" popup。我希望我的测试消除两个弹出窗口。
UI 录制为我生成了以下代码:
[app.alerts[@"cameraAccessTitle"].collectionViews.buttons[@"OK"] tap];
但是,[app.alerts[@"cameraAccessTitle"] exists] 解析为 false,并且上面的代码会生成错误:Assertion Failure: UI Testing Failure - Failure getting refresh snapshot Error Domain=XCTestManagerErrorDomain Code=13 "Error copying attributes -25202"。
那么在测试中消除一堆系统警报的最佳方法是什么?系统弹出窗口会中断我的应用程序流程并立即使我的正常 UI 测试用例失败。事实上,任何关于如何绕过系统警报以便我可以恢复测试通常流程的建议都值得赞赏。
这个问题可能与这个没有答案的 SO 帖子有关:Xcode7 | Xcode UI Tests | How to handle location service alert?
提前致谢。
【问题讨论】:
-
一般情况下,您不应同时显示两个警报。但是,如果您在它们之间稍作延迟,您可以确定警报呈现的顺序。
-
如果我知道序列(它几乎总是相同的序列),我想知道为什么
[app.alerts[cameraAccessTitle].collectionViews.buttons[@"OK"] tap];和[app.alerts[notificationAccessTitle].collectionViews.buttons[@"OK"] tap];永远不起作用。它将关闭第一个弹出窗口,然后停止。第二次点击没有发生。我将把这个细节添加到我的帖子@ILikeTau -
是否不可能在另一个警报出现之前关闭警报?
标签: ios objective-c xctest xcode7 xcode-ui-testing