iOS:如何断言在 UITest 中选择了一个单元格?

Posted

技术标签:

【中文标题】iOS:如何断言在 UITest 中选择了一个单元格?【英文标题】:iOS: How to assert a cell is selected in UITest? 【发布时间】:2015-12-03 05:43:21 【问题描述】:

我有以下层次结构: ViewController -> TableView -> TableViewCell -> CollectionView -> CollectionViewCell -> UIImage

tableViewCell上,collectionView里面,有4个cell。每个单元格都有一个唯一的标签。

当用户点击 collectionViewCell 时,单元格会被选中,并且 UIImageView 也会突出显示。在这种情况下,这意味着那里有不同的图像。我启用了 UIImageView 的可访问性并将特征设置为按钮和图像以尝试访问这些 XCUIElementTypes

我无法使任何 UITest 工作,因为它总是告诉我 UIImageView 有多个结果,即使图像视图所在的单元格具有唯一标识符。

如何断言单元格已被选中?

使用我得到的记录功能: let whatIsYourFilingStatusCellsQuery = XCUIApplication().tables.cells.containingType(.StaticText, identifier:"Single").childrenMatchingType(.Image).matchingIdentifier("btn_unselected").tap()

【问题讨论】:

【参考方案1】:

@Che 有正确的想法。

didSelectItemAtIndexPath:,我这样做了:

cell.accessibilityIdentifier = @"isSelected";

然后,在测试文件中:

XCTAssertEqualObjects(randomCellToTap.value, @"isSelected");

我也打算在didDeselect...做相反的瘦

【讨论】:

您不应遵循此建议。 accessibilityValue 用于实际可访问性 (see the docs)。在可访问性下列出的唯一应该用于开发目的的就是标识符。【参考方案2】:

我真的没有很好的解决方案。但我看到只有一种方法可以断言单元格被选中。在选择时为单元格设置一些属性。例如,accessibilityIdentifier 将具有唯一 id,accessibilityValue 将包含您需要的任何信息(“selected=true”或“selected”)

UPD 您有权访问这些属性:

【讨论】:

至少对我来说, selected 不起作用,它不是 XCUIElement 属性之一。你以前试过这个解决方案吗?但也许如果我更改可访问性标签,那么我可以检查“新”元素的存在吗?我会考虑更多... 我的意思不是XCUIElement.selected。我的意思是在你的应用代码中设置yourElement.accessibilityValue = @"selected=true";您可以从 测试代码 中获取此值,例如 yourXCUIelement.value。看Understanding accessibility on ios link 哦,您不是说要设置可访问性标签的选定状态。这是一个好主意,我不确定它是否可能,但我会在完成其他一些问题的调试后尝试。您在帖子中的“UDP”是什么意思?我不知道这个词。我不认为我们可以访问所有这些属性,但其中大多数,是的。这些是您可以在 UITest 中使用的元素属性:masilotti.com/xctest-documentation/Protocols/… UPD=Update(post) :) 我确信我们至少可以访问可访问性 ID、值、描述(因为我使用它们) 您不应遵循此建议。 accessibilityValue 用于实际可访问性 (see the docs)。在可访问性下列出的唯一应该用于开发目的的就是标识符。

以上是关于iOS:如何断言在 UITest 中选择了一个单元格?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 xamarin.UITest 从 iOS 上的表格单元格中清除文本?

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

如何在 iOS UItest 中选择本地化的日期选择器项目

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

Xamarin.UITest 与 OS X 10.15 不兼容?

如何在 Swift 中 UITest 更改 UIButton 的图像?