在 XCUITest 中,用于查找 table 视图单元格和部分 headers 显示顺序的语法

In XCUITest, Syntax to find order of the table view cells and section headers getting displayed

在 XCUITest 中查询元素时,它通常return按显示顺序排列元素。

例如:XCUIApplication().tables.cells.allElementBoundByIndex,将 return 一个 [XCUIElement] 的数组按照它在 UI 中显示的顺序排列。

无法按显示的顺序一起获取部分 headers 和单元格。

要找到显示在每个部分之间的单元格列表,我必须使用框架。

XCUIElement().frame.origin.y

我试图确认 header 部分的顺序和 header 显示的元素。无法在 XCUITest 中找到语法以按显示顺序 一起获取 header 和 table 视图单元格 。这是因为 table 视图单元格是使用 XCUIApplication().tables.cells 标识的,而部分 headers 是使用 XCUIApplication().tables.otherElements 标识的。

步骤:1,

我在 header 单元格和 header 之间显示的单元格中添加了单独的辅助功能标识符。

步骤:2,

分别获取正常的table单元格列表和其他元素单元格列表。

let elementIDMatchingPredicate = NSPredicate(format: "identifier == %@","kPodcastCellID")
let podcastCellsList: [XCUIElement] = XCUIApplication().tables.cells.matching(elementIDMatchingPredicate).allElementsBoundByIndex



 let elementIDMatchingPredicate = NSPredicate(format: "identifier == %@","kPodcastSectionHeaderCellID")
let podcastCellsHeaderList: [XCUIElement] = XCUIApplication().tables.otherElements.matching(elementIDMatchingPredicate).allElementsBoundByIndex

注意:有时 tables 中的其他元素可能会重复,最好为在单元格中显示的元素添加标识符并获取它。

步骤:3,

遍历列表并将其附加到 Two-Dimensional 数组,以便您可以在每行的第一列和最后一列添加部分 header 或页脚。将元素添加到一维可能会导致难以识别两个部分 headers.

之间的元素
for hIndex in 0...(podcastCellsHeaderList.count - 1) {
        //get the ycoordinates of header at hIndex and (hIndex+1)
    //If its last header, y coordinates should be last of element.frame.origin.y + 1(not podcast header)
    for cIndex in 0...(podcastCellsList.count - 1) {

    //get the cells which has yCoordinates >= hIndex and lesser than hIndex+1
    }
}