iOS UITest:如何找到UITableViewCell的AccessoryView?

Cru*_*ruz 4 uitableview accessoryview ios swift uitest

你好,我正在学习UITests,现在

我有个问题

如何检测accessoryView的敲击tableViewCell?在UITest

下面是我的 tableViewCell

在此输入图像描述

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

像这样

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

但是accesorry是一个子类 UIView

所以我在cellForRows功能中分配了accisibility identifier键

cell.accessoryView?.accessibilityIdentifier ="FTCellAccesoryIdentifier"

我的测试功能是

我试试

app.tables.cells.elementBoundByIndex(lastCellIndex).otherElements.elementMatchingType(.Any, identifier: "FTCellAccesoryIdentifier").tap()
Run Code Online (Sandbox Code Playgroud)

但不行

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

bac*_*h-f 6

TL; DR

关于...

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

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

在此输入图像描述

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

XCUIApplication().tables.buttons["More Info, Title"].tap()
Run Code Online (Sandbox Code Playgroud)

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

XCUIApplication().tables.staticTexts["Title"].tap()    
Run Code Online (Sandbox Code Playgroud)

很长的故事:

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

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

当您尝试设置详细信息披露的可访问性标识符/标签时cellForRow,cell.accessoryView为零.为什么?来自Apple:

accessoryView的

讨论

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

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

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

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