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
参数,您可以知道它是哪个单元格!
希望这会有所帮助:)