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 上的表格单元格中清除文本?
如何找出(使用 XCTest UITest)在 tvOS AppleTV 的表格视图中具有焦点的单元格?