iOS UITest:如何找到UITableViewCell的AccessoryView?

您好我现在正在学习UITests

我有个问题

如何在tableViewCell上检测accessoryView的点击? 在UITest

下面是我的tableViewCell

在此处输入图像描述

我想检测细节关闭配件视图的点击

喜欢这个

app.tables.cells.buttons["FTCellAccesoryIdentifier"].tap()

但是accesorry是UIView的子类

所以我在cellForRows函数中分配accisibility identifier key

cell.accessoryView?.accessibilityIdentifier ="FTCellAccesoryIdentifier"

我的测试function是

我试试

 app.tables.cells.elementBoundByIndex(lastCellIndex).otherElements.elementMatchingType(.Any, identifier: "FTCellAccesoryIdentifier").tap() 

但不行

可以在UITests中点击单元格的accesoryView吗?

TL; DR

关于…

可以在UITests中点击单元格的accesoryView吗?

……是的
但是你必须使用默认的可访问性标识符
例如,对于像这样的单元格:

在此处输入图像描述

在UI测试期间点击详细信息披露按钮(“ 更多信息 ”是此处的关键):

 XCUIApplication().tables.buttons["More Info, Title"].tap() 

在UI测试期间点击单元格本身

 XCUIApplication().tables.staticTexts["Title"].tap() 

很长的故事:

无法更改详细信息披露的默认辅助function标识符。 来自Apple :

注意:如果表格单元格包含任何标准表格视图元素(例如披露指示符,详细信息公开按钮或删除控件),则无需执行任何操作即可访问这些元素。 但是,如果表格单元格包含其他类型的控件(如开关或滑块),则需要确保这些元素可以正确访问。

当您尝试在cellForRow中设置Detail Disclosure的可访问性标识符/标签时, cell.accessoryView为nil。 为什么? 来自Apple :

accessoryView的

讨论

如果此属性的值不是nil,则UITableViewCell类在表视图的正常(默认)状态下使用给定视图作为附件视图; 它忽略了accessoryType属性的值。 提供的附件视图可以是框架提供的控件或标签或自定义视图。 附件视图显示在单元格的右侧。

在您定义附件视图之前,附件视图将为零。 :/

如果您真的想为它设置自定义标识符,则需要提供“自己的”详细信息披露(例如:自定义的UIView )。 例如(说明):

 cell.accessoryView = UIView(frame: CGRectMake(0, 0, 20, 20)) cell.accessoryView?.backgroundColor = UIColor.blueColor() cell.accessoryView?.accessibilityIdentifier = "FTCellAccesoryIdentifier" 

您应该使用accessoryButtonTappedForRowWithIndexPath委托方法来处理clickView的单击。

然后通过方法的indexPath参数,您可以知道它是哪个单元格!

希望这会有所帮助:)