Xcode UI 测试 - UITableView 部分
Posted
技术标签:
【中文标题】Xcode UI 测试 - UITableView 部分【英文标题】:Xcode UI Testing - UITableView sections 【发布时间】:2015-12-17 08:46:04 【问题描述】:我想使用 Xcode 的 UI 测试来计算 tableview 中的节数和每个节中的单元格数。我该怎么做?
【问题讨论】:
为什么不使用你的数据源呢? 1.如何从 UI 测试中访问代码? 2. 我想确保从数据源正确解析这些部分 只需从您的 UI 测试类中调用 tableview 的 numberOfSection 和 numberOfRows ...?(不确定我的问题是否正确) 我无法从 UI 测试类访问 tableview 无法直接从 UI 测试目标访问应用程序代码。有关详细信息,请参阅this answer。 【参考方案1】:从 Xcode 7 开始,表格视图标题显示为 Other
元素。
以下是我为应用中的(分组)表格视图所做的:
extension TableLayoutTests
func testHasMessagesGroup()
XCTAssert(app.tables.otherElements["MESSAGES"].exists)
func testHasMessageCell()
let header = app.tables.otherElements["MESSAGES"]
let cell = app.tables.cells.elementBoundByIndex(1)
XCTAssertGreaterThanOrEqual(cell.accessibilityFrame.minY, header.accessibilityFrame.maxY)
func testHasOtherMessageCell()
let header = app.tables.otherElements["MESSAGES"]
let cell = app.tables.cells.elementBoundByIndex(2)
XCTAssertGreaterThanOrEqual(cell.accessibilityFrame.minY, header.accessibilityFrame.maxY)
【讨论】:
很有创意,我喜欢【参考方案2】:Joe Masilotti 完全正确,因为无法直接从 UI 测试访问应用程序代码,但如果您想过时,可以反向通道。假设你没有。
Xcode 的 UI 测试框架可以访问所有 Swift 语言以及应用程序的 UI 层次结构,但不能访问数据层;因此您可以执行以下操作:
为包含索引组件(例如 photos.headers_0 等)的 tableview 部分的页眉或页脚提供accessibilityIdentifiers 完成后,使用条件来确定节数 同样,photos.section_0.cell_0 可以在您的数据源中分配,迭代器 + 条件可以存储第 0 节或任何其他节中的单元格数。【讨论】:
以上是关于Xcode UI 测试 - UITableView 部分的主要内容,如果未能解决你的问题,请参考以下文章
Xcode UI 测试:UITableViewCell 上的辅助功能查询失败
如何使用 Swift 在 XCode UI 自动化中选择随机表格视图单元格
Xcode/iOS 5 - 仅舍入 UITableView 的底部 2 个角