给定XCUITest中的文本,如何获取单元格的索引?

时间:2019-06-17 18:43:24

标签: swift xcode xctest xcuitest

我正在测试XCUItest中的表格视图单元格内容。就我而言,我不知道单元格文本的顺序,也不允许设置文本的可访问性ID。给定内部文本,如何获取单元格的索引?

enter image description here

例如,如果我想获取包含文本“ Cell 2 Text”的单元格的索引,则可以尝试如下操作:

func testSample() {
    let app = XCUIApplication()
    let table = app.tables
    let cells = table.cells

    let indexOfCell2Text = cells.containing(.staticText, identifier: "Cell 2 Text").element.index(ofAccessibilityElement: "I dunno")
    print(indexOfCell2Text)
}

我觉得我已经接近了,但不确定。有人可以提出解决方案吗?

很抱歉,以前是否有人提出这个问题。我找不到关于此的任何具体信息。

我之前访问过的参考资料: https://developer.apple.com/documentation/xctest/xcuielementquery/1500842-element

How can I verify existence of text inside a table view row given its index in an XCTest UI Test?

iOS UI Testing tap on first index of the table

2 个答案:

答案 0 :(得分:1)

最可靠的方法实际上是将索引添加到可访问性标识符中。但是,你不能。您可以更改单元格的可访问性标识符而不是文本吗?

无论如何,如果不滚动表格视图,则可以这样处理:

let idx = 0
for cell in table.cells.allElementsBoundByIndex {
    if cell.staticTexts["Text you are looking for"].exists {
        return idx
    }
    idx = idx + 1
}

否则,您将使用的索引与屏幕上显示的单元格有关。因此,滚动后,新的第一个可见单元格将成为索引为0的单元格,从而使搜索更加混乱。

答案 1 :(得分:0)

for index in 0..<table.cells.count {
    if table.cells.element(boundBy: index).staticTexts["Your Text"].exists {
        return index
   }
}