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
状态,这样也可以降低编程的复杂度画外音 状态。
其他解决方案将需要您手动实现画外音状态。
我有以下层次结构: 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
状态,这样也可以降低编程的复杂度画外音 状态。
其他解决方案将需要您手动实现画外音状态。