Error handling UI测试失败,出现错误“0”;未能在15.0s内获取快照”;
我有一个包含大量单元格的表格视图。我尝试从此表视图中点击特定单元格。但测试以以下错误结束: 未能在15.0s内获取快照 我假设,系统将在访问整个表视图的元素之前对其进行快照。由于单元数量巨大,拍摄快照的时间不够(15秒可能是系统默认时间) 我手动设置睡眠时间/(我设置60秒)。60秒后我仍然无法进入电池 我发现一件奇怪的事情是,在访问单元格之前,我在调试器中打印对象,如下所示:Error handling UI测试失败,出现错误“0”;未能在15.0s内获取快照”;,error-handling,xctest,snapshot,xcode-ui-testing,Error Handling,Xctest,Snapshot,Xcode Ui Testing,我有一个包含大量单元格的表格视图。我尝试从此表视图中点击特定单元格。但测试以以下错误结束: 未能在15.0s内获取快照 我假设,系统将在访问整个表视图的元素之前对其进行快照。由于单元数量巨大,拍摄快照的时间不够(15秒可能是系统默认时间) 我手动设置睡眠时间/(我设置60秒)。60秒后我仍然无法进入电池 我发现一件奇怪的事情是,在访问单元格之前,我在调试器中打印对象,如下所示: po print XCUIApplication().cells.debugDescription 它显示了一个错误
po print XCUIApplication().cells.debugDescription
它显示了一个错误,如
未能在15.0s内获取快照
错误:执行被中断,原因:内部ObjC异常断点(-3)
进程已返回到表达式求值之前的状态
如果我使用
po print XCUIApplication().cells.debugDescription
现在,它将在调试器视图中打印tableview中的所有单元格
不知道为什么会这样。有没有人面临过类似的问题?需要帮助
我假设,系统将在访问整个表视图的元素之前对其进行快照
你的假设是正确的,但事实上还有更多。UI测试从应用程序请求快照。应用程序获取此快照,然后将快照发送到测试,测试最终在测试中评估查询。对于非常大的快照(如表视图),这意味着:
app.navigationbar.buttons[“a button”]
。通过此增强,您将看到性能得到更大的提高—速度提高了约50%,内存减少了约35%
最后也是最值得注意的(也是最危险的)改进是他们所称的第一个Match API。这带来了一些权衡/风险,但提供了最大的性能增益。它提供了一个新的.firstMatch
属性,用于返回XUIElement查询的第一个匹配项。使用.firstMatch
时,不会出现导致测试失败的不明确匹配,因此您可能会对XUIElement评估或执行您不打算执行的操作。预计性能将提高约10倍,而且根本不会出现内存峰值
所以,为了回答您的问题-更新到Xcode 9、macOS High Sierra和iOS 11。利用.firstMatch
,您可以使用高度特定的查询,您的快照超时问题应该得到解决。事实上,您遇到的超时问题可能已经通过远程查询和查询分析的总体改进得到了解决,而无需使用。firstMatch