iOS: 如何断言单元格在 UITest 中被选中?

iOS: How to assert a cell is selected in UITest?

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

在 tableViewCell 上,在 collectionView 内部,有 4 个单元格。每个单元格都有一个唯一的标签。

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

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

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

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

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

UPD 您有权访问这些属性:

@Che 的想法是对的。

didSelectItemAtIndexPath: 中,我这样做了:

cell.accessibilityIdentifier = @"isSelected";

然后,在测试文件中:

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

我也会在didDeselect...

中做相反的瘦身

将选择状态添加到accessibilityTraits,像这样:

cell.accessibilityTraits = [.button, .selected]

然后在UITest中可以检查是否是cell.isSelected状态,这样也可以降低编程的复杂度画外音 状态。

其他解决方案将需要您手动实现画外音状态。