使用 Swift 3 / Swift 4 in Xcode 9 处理 XCUITest 中的系统对话框(警报)

Handle system dialog (alert) in XCUITest with Swift 3 / Swift 4 in Xcode 9

我想编写一个 XCUITest,用于获取系统对话框/警报。我如何在 Swift 3 / Swift 4 和 Xcode 9 中处理它? 它应该找到警报并单击两个显示的按钮之一。 每次,如果我搜索警报,系统都找不到它们。

XCUIApplication().alerts.element.exists // Will get nothing
XCUIApplication().alerts.element.buttons.element(boundBy: 0) // Will get nothing too.

您可以尝试使用addUIInterruptionMonitor。下面的这个例子是当系统警报对话框出现在屏幕上时点击允许按钮。

    addUIInterruptionMonitor(withDescription: "System alert") { (alert) -> Bool in
        if alert.buttons["Allow"].exists {
            alert.buttons["Allow"].tap()
        }
        return true
    }