如何通过 UI 测试(Xcode 12,iOS14)访问推送通知?

How to get access into push notification with UI tests (Xcode 12, iOS14)?

我正在迁移以使用新的 Xcode 12,但我遇到了 UI 测试的问题。 代码

let springBoard = XCUIApplication(bundleIdentifier: appleBundleIdentifier) let notification = springBoard.otherElements["NotificationShortLookView"]

不再工作,我找不到如何指示通知视图。它是如何改变的?

通知元素在 iOS14 中的可访问性层次结构似乎略有不同。这应该有效:

let springBoard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
let notification = springBoard.otherElements["Notification"].descendants(matching: .any)["NotificationShortLookView"]

有趣的是,代表推送通知的实际 XCUIElement 具有类型“BannerNotification”(XCUIElementType,原始值表示为 83),我在 public headers。目前可能是私有类型。因此 decendants(matching: .any).

的解决方法

另外accessing/asserting里面的通知也是可以的:

let notification = springBoard.otherElements["Notification"].descendants(matching: .any)["APPNAME, now, TITLE, BODY"]
    if notification.waitForExistence(timeout: 10) {
        notification.tap()
    }

如果有人想测试通知是否有附件,请在通知正文后添加“附件”

let notification = springBoard.otherElements["Notification"].descendants(matching: .any)["APPNAME, now, TITLE, BODY, Attachment"]