XCUITest 等待其中包含特定静态文本的单元格

XCUITest wait for a cell with a specific static text inside it

我有一个包含一些项目的集合视图。在我的 UI 测试期间,我点击了一个按钮,这将触发一个网络请求,该请求完成后,将在索引 0 处向该集合视图中插入一个单元格。尽管该网络请求来自本地服务器,仍然需要一两秒钟才能完成。

我想等待输入新的单元格,并检查它是否具有正确的值。这将是按钮背后的功能已正常工作的视觉确认。

我该怎么做?我不能使用 application.collectionViews.cells.element(boundBy: 0),因为那个位置已经有一个单元格,所以它会立即找到它,但它的值是错误的。

我基本上需要通过子视图查询集合视图单元格。像这样:

let predicate = NSPredicate(format: "staticTexts['Title Label I'm after'].exists == 1")
application.collectionViews.cells.element(matching: predicate)

但这不起作用,实际上它崩溃了,大概是因为 staticTexts 对谓词解析器不可用。

我在想的另一件事是我构建了我自己的 XCTestExpectation 版本,它每秒运行一次,并运行一个处理程序来获取第一个单元格并检查其内容。

知道了,您必须在 cells 列表中使用 containing 而不是 matching,如下所示:

let predicate = NSPredicate(format: "label == 'Title Label Value'")
let cell = application.collectionViews.cells.containing(predicate).firstMatch
wait(forElement: cell, timeout: timeout)