我从这篇文章中发现了如何使用以下代码行在模拟器上确认系统警报:
self.viewTester.acknowledgeSystemAlert()
不幸的是,KIF 代码 #if TARGET_IPHONE_SIMULATOR 包裹着它,因此它无法在设备上工作。如何在自动测试期间绕过设备上的权限警报?
我遇到了同样的问题,在这里我找到了解决方案:
它比这个 KIF 函数在设备上不起作用,它仅适用于模拟器! 所以,你可以在UITarget中有一个UITest,其中只有一个测试用例,它将添加一个UIMonitors,如下所示:
// ask for all the permission from users then :
_ = addUIInterruptionMonitor(withDescription: "") { alert -> Bool in
let confirmLabels = ["Allow", "OK"]
for (_, label) in confirmLabels.enumerated() {
let allow = alert.buttons[label]
if allow.exists {
allow.tap()
break
}
}
return true
}
// do some UI interaction here like tapping on some view in app
因此,您可以在每次运行 UnitTests 之前调用此 UITest,这将使您的应用程序准备好拥有所有权限。
顺便说一句,如果有人有更好的解决方案,请提供我想知道的原因,太;)