iOS UITest:如何找到 UITableViewCell 的 AccessoryView?

iOS UITest : How to find UITableViewCell's AccessoryView?

你好我正在学习UITests现在

我有一个问题

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

下面是我的tableViewCell

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

像这样

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

但配件是 UIView

的子类

所以我在cellForRows函数

中分配accisibility identifier key

cell.accessoryView?.accessibilityIdentifier ="FTCellAccesoryIdentifier"

我的测试函数是

我试试

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

但不起作用

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

您应该使用 accessoryButtonTappedForRowWithIndexPath 委托方法来处理对 accessoryView 的点击。

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

希望这会有所帮助:)

TL;DR

关于...

is possible to tap cell's accesoryView in UITests?

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

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

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

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

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

长话短说:

无法更改详细信息披露的默认可访问性标识符。 From Apple:

Note: If your table cells contain any of the standard table-view elements, such as the disclosure indicator, detail disclosure button, or delete control, you do not have to do anything to make these elements accessible. If, however, your table cells include other types of controls, such as a switch or a slider, you need to make sure that these elements are appropriately accessible.

当您尝试设置 cellForRow 中详细披露的可访问性 identifier/label 时,cell.accessoryView 为零。为什么?同样,来自 Apple:

accessoryView

讨论

If the value of this property is not nil, the UITableViewCell class uses the given view for the accessory view in the table view’s normal (default) state; it ignores the value of the accessoryType property. The provided accessory view can be a framework-provided control or label or a custom view. The accessory view appears in the the right side of the cell.

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

如果您真的想为它。例如(举例说明):

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