从 UITest 中选择集合视图中的第一个单元格

Posted

技术标签:

【中文标题】从 UITest 中选择集合视图中的第一个单元格【英文标题】:Select first cell in collection view from UITest 【发布时间】:2015-12-29 17:30:23 【问题描述】:

如果集合视图中存在第一个单元格,有没有办法从 UITest 中选择或触发 didSelect?

录制时,它使用所选单元格中的静态文本。如果单元格从网络中填充了动态内容并且集合视图可能不包含单元格,则此测试将中断。

【问题讨论】:

【参考方案1】:

您可以选择集合视图中的第一个单元格:

let app = XCUIApplication()
app.launch()

let firstChild = app.collectionViews.childrenMatchingType(.Any).elementBoundByIndex(0)
if firstChild.exists 
    firstChild.tap()

斯威夫特 3

let firstChild = app.collectionViews.children(matching:.any).element(boundBy: 0)
if firstChild.exists 
     firstChild.tap()

从理论上讲,您的测试套件应该使用确定性数据。您应该始终确切地知道服务将返回多少个单元格以及它们包含的内容。您可以通过使用种子开发服务器或在运行测试套件时模拟网络请求来完成此操作。

【讨论】:

谢谢乔。关于确定性数据,我同意,但测试是针对屏幕截图的,它需要来自服务器的真实数据。我最终根据单元格类型和索引路径设置了每个单元格的accessibilityIdentifier,并在访问它之前检查它是否存在。 "您应该始终准确地知道有多少单元格以及它们包含的内容将从服务中返回。"我花了一点时间才发现单元格的数量就是绘制的任何内容,并且会因屏幕大小而异。因此,当我想要第 3 部分中的第一个单元格时,我必须知道第 1 部分和第 2 部分中有多少,并确保第 3 部分实际上在测试设备上可见,而不仅仅是它存在于我的收藏视图和我的数据。

以上是关于从 UITest 中选择集合视图中的第一个单元格的主要内容,如果未能解决你的问题,请参考以下文章

为旁白选择视图中的第一个元素

如何找出(使用 XCTest UITest)在 tvOS AppleTV 的表格视图中具有焦点的单元格?

将数据从集合视图单元格移动到新的集合视图单元格

如何根据集合视图中的单元格选择来控制表格视图的内容?

填充时从集合视图中选择一个单元格

UITextField 没有成为集合视图中的第一响应者