首页 > 解决方案 > XCUITest 使用 Springboard 测试本机 Callkit UI。如何获取来电者标签?

问题描述

我正在尝试在我们的应用程序中测试 VOIP 通话。我模拟一个呼叫,并尝试断言是否存在正确的呼叫者 ID。但是,我无法使用以下方法访问来电者姓名标签“Bob”:

let springBoard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
XCTAssert(springBoard.staticTexts["Bob‬"].waitForExistence(timeout: 10)) // Assertion fails

但是,如果我尝试使用相同的调用访问其下方的标签“*** Audio…”,则断言通过:

XCTAssert(springBoard.staticTexts["*** Audio…"].waitForExistence(timeout: 10))

当我打印出来时,springBoard.debugDescription我在可访问性层次结构中找到了“Bob”和“*** Audio…”,它们都是静态文本:

调试说明

正在测试的屏幕:

正在测试的原生 UI

如何访问“Bob”标签并断言它是正确的来电显示?

标签: iosswiftcallkitxcuitestspringboard

解决方案


我遇到了同样的问题。我发现它使用NSPredicateLIKE 而不是仅使用名称。我认为在名称周围添加了隐藏字符。

            XCTAssert(springBoard.staticTexts.matching(NSPredicate(format: "label LIKE '*Bob*'")).firstMatch.waitForExistence(timeout: 10))

这对我有用,也应该对你有用。


推荐阅读