如何在UITests的`tableViewCell`中访问`detailTextLabel`?

时间:2017-01-31 19:41:18

标签: ios swift xcode testing xcode-ui-testing

我想检查我的UITest中是否有一个带有给定字符串的tableViewCell.detailTextLabel。问题是当我搜索app.tables.cells.children(matching: .staticText)时,它只会查找tableViewCell.textLabel的标签。 有关如何查询detailTextLabel的任何想法?

2 个答案:

答案 0 :(得分:5)

您可以尝试更通用的查询来确定文本是否存在。例如,如果您试图断言单元格包含" 123 Main St。",则可以使用以下内容:

let app = XCUIApplication()
XCTAssert(app.staticTexts["123 Main St."]).exists)

当然,如果该文本出现在textLabel中,则测试仍然会通过。

答案 1 :(得分:1)

听起来您的详细文字标签无法访问。

要在视图层次结构中查看测试可用的所有内容,请打印以下查询的调试说明,这可以帮助您了解元素是否显示,类型是什么以及标识符或标签是什么:

let app = XCUIApplication()
print(app.descendants(matching: .any).debugDescription)

确保无法访问包含视图(单元格?),并且可以访问详细文本标签 ,并为其指定标识符:

let cell = UITableViewCell!
cell.isAccessibilityElement = false
cell.detailTextLabel.isAccessibilityElement = true
cell.detailTextLabel.accessibilityIdentifier = "myDetailTextLabel"