如何关闭应用程序崩溃时出现的系统对话框?

How to close System dialogs that appears on app crash?

我正在使用 xcuitest 框架来自动化 mac 应用程序。当应用程序崩溃后再次打开时,我会收到系统对话框。我想以编程方式处理对话框。但是对话框出现在进程“UserNotificationCenter”下,而不是被测应用程序下。在这种情况下我该如何处理警报?

您有两个选择:

  1. 使用InterruptionMonitor (documentation, )。这个 然而,这种方法有点陈旧,我发现它不适用于 所有对话和情况。
  2. 创建一个方法,它将等待一些常规应用程序的按钮。如果应用程序的按钮(或标签栏或其他类似的 XCUIElement)在您的应用程序启动后可见且可点击,您可以继续测试,如果不是,您可以等待 UserNotificationCenter 对话框的按钮并通过其识别并点击它string/position。

我正在使用第二种方法,它的效果比 InterruptionMonitor 好得多。但这实际上取决于您的应用布局和 use-case.

您应该能够首先阻止它出现。类似于:

defaults write com.apple.CrashReporter DialogType none