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

Mat*_*ney 2 ios swift xcuitest

我有一些项目的集合视图。在我的 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)
Run Code Online (Sandbox Code Playgroud)

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

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

Mat*_*ney 6

明白了,你必须使用containing而不是matchingcells列表中,如下所示:

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