我有一些物品的收藏夹视图。在我的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
版本,该版本每秒运行一次,并运行一个处理程序,该处理程序将获取第一个单元格并检查其内容。
答案 0 :(得分:2)
知道了,您必须使用containing
而不是matching
列表上的cells
,如下所示:
let predicate = NSPredicate(format: "label == 'Title Label Value'")
let cell = application.collectionViews.cells.containing(predicate).firstMatch
wait(forElement: cell, timeout: timeout)