addUIInterruptionMonitor() 在运行 iOS 14.0.1 的设备上不起作用

Posted

技术标签:

【中文标题】addUIInterruptionMonitor() 在运行 iOS 14.0.1 的设备上不起作用【英文标题】:addUIInterruptionMonitor() not working on device running iOS 14.0.1 【发布时间】:2020-09-29 20:04:32 【问题描述】:

自从将我的设备 (iPhone 11) 升级到 ios 14.0.1 后,我发现 addUIInterruptionMonitor() 根本不会被触发。它之前在 iOS 13.4.1 上运行,这是我安装的最后一个版本。

我的代码:

addUIInterruptionMonitor(withDescription: "App Would Like to Send You Notifications")  (alert) -> Bool in
    if alert.buttons["Allow"].exists 
        alert.buttons["Allow"].tap()
        return true
    
    return false


XCUIApplication().tap()  // interacting with the app to trigger the interruption monitor

自升级以来,我的代码没有任何变化 - 唯一变化的是安装的 iOS 版本。有没有其他人遇到过类似的情况?

【问题讨论】:

有人修过吗? 【参考方案1】:

我已经使用此代码:

XCUIApplication.otherElements.firstMatch.swipeLeft()

app.otherElements.firstMatch.swipeLeft()

解决方案是使用otherElements.firstMatch。不知何故,只有otherElementsXCUIApplication 视图层次结构中。您可以使用tap-event 或swipe-event。我发现swipe-event 对 UITest 状态的破坏性最小。

【讨论】:

【参考方案2】:

我只是通过休眠执行 10 秒来解决它。

Darwin.sleep(10)
addUIInterruptionMonitor(withDescription: "App Would Like to Send You Notifications")  (alert) -> Bool in
    if alert.buttons["Allow"].exists 
        alert.buttons["Allow"].tap()
        return true
    
    return false


XCUIApplication().tap()

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于addUIInterruptionMonitor() 在运行 iOS 14.0.1 的设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

关闭位置服务请求对话框

XCUITest 验证 ui 中断处理程序发生

UITest 中断处理程序调用 tap() 两次

如何从 UI Test 访问 Apple Id“登录”对话框?