iOS UITest:如何找到UITableViewCell的AccessoryView?

时间:2016-05-19 11:38:19

标签: ios swift uitableview accessoryview uitest

您好我现在正在学习UITests

我有一个问题

如何检测附件查看tableViewCell?在UITest

下面是我的tableViewCell

enter image description here

我想要检测详细信息关闭配件视图&#39> s

像这样

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

但是accesorry是UIView

的子类

所以我在cellForRows函数

中分配了accisibility identifier key

cell.accessoryView?.accessibilityIdentifier ="FTCellAccesoryIdentifier"

我的测试功能是

我试试

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

但没有工作

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

2 个答案:

答案 0 :(得分:6)

TL; DR

...关于

  

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

...是的。
但您必须使用默认辅助功能标识符 例如,对于像这样的单元格:

enter image description here

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

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

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

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

长篇故事:

无法更改详细信息披露的默认辅助功能标识符。 From 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"

答案 1 :(得分:1)

您应该使用/(?!\s)&(?!\s)/g委托方法来处理点击accessoryButtonTappedForRowWithIndexPath

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

希望这会有所帮助:)