我正在测试XCUItest中的表格视图单元格内容。就我而言,我不知道单元格文本的顺序,也不允许设置文本的可访问性ID。给定内部文本,如何获取单元格的索引?
例如,如果我想获取包含文本“ 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?
答案 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
}
}