在 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
}
}
在 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
}
}