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 自动化中选择随机表格视图单元格

UI 测试失败:发现多个匹配错误

Xcode/iOS 5 - 仅舍入 UITableView 的底部 2 个角

如何编写 UI 测试来测试单击 UITableView 中的第一个单元格时图像是不是存在?

swift in UI test(测试UITableView中的单元格数)