ios - 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…”,它们都是静态文本:
正在测试的屏幕:
如何访问“Bob”标签并断言它是正确的来电显示?
解决方案
我遇到了同样的问题。我发现它使用NSPredicate
LIKE 而不是仅使用名称。我认为在名称周围添加了隐藏字符。
XCTAssert(springBoard.staticTexts.matching(NSPredicate(format: "label LIKE '*Bob*'")).firstMatch.waitForExistence(timeout: 10))
这对我有用,也应该对你有用。
推荐阅读
- ios - How to retry failed web service calls with time delay in ios app
- python - 尝试从 kubernetes 访问 boto3 时出现 503
- c++ - Visual Studio 中的链接器错误
- mongodb - 全文搜索 Fastify 与 Mongoose
- php - 如何隐藏导航栏链接选项并仅在用户登录 PHP 时显示该选项?
- git - git:使用 git-extensions 和 WinMerge 处理 gupta apl 文件(编码问题)
- c++ - Visual Studio 2019 无法识别 Qt 6.1.2 包名称
- html - 使用时选择保存图像的格式
- node.js - 使用 node-http-proxy 的代理管理器服务器无法处理 HTTPS 网站
- css - gcc 同时编译和链接目标文件和源文件