【发布时间】:2020-07-30 05:08:36
【问题描述】:
我正在为一个应用程序编写 UI 测试,该应用程序在其 tableview 中包含巨大的单元格(~ 1000)。尝试访问单元格元素将显示以下错误:
未能获得匹配的快照:评估 UI 查询时超时。
场景:
- 如果我尝试通过
XCUIApplication().tables.firstMatch.cells.count获取单元格计数,则会引发异常 -
第一次打印
XCUIApplication().debugDescription会打印整个层次结构(不过,打印大约需要 10 秒) - 之后,如果我尝试打印完全相同的行
XCUIApplication().debugDescription,则会引发异常
我无法检查单元格计数,也无法访问单元格元素。每当我访问 XCUIApplication() 中的元素时,系统都会尝试评估所有 UI 元素。
这是预期的行为,所以我想在本地制作XCUIApplication() 数据的副本,并使用本地保存的实例处理我的查询。所以,我尝试了这个:
private lazy var dummyApp: XCUIApplication = {
return XCUIApplication()
}()
在这里,我使用了一个惰性变量(因为我只想调用一次 XCUIApplication() 来阻止系统拍摄快照),它返回 XCUIApplication() 实例并尝试打印单元格计数,例如:
dummyApp.tables.firstMatch.cells.count
这也会抛出同样的错误。
问题:
有没有办法用局部变量保存XCUIApplication() 的整个结构?或者我可以在访问元素之前停止/扩展快照过程吗?
P.S:我使用的是 Xcode 11.3.1。我长期面临this 问题。由于 XCUITest 从 Xcode 9 更改了它与应用程序的交互,因此将此问题作为一个单独的问题发布。
【问题讨论】:
标签: swift snapshot evaluation bulk xcuitest