如何通过 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"]
我正在迁移以使用新的 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"]