Чтобы найти список ячеек, отображаемых между каждым разделом, мне пришлось использовать frame.
XCUIElement (). Frame.origin.y
Я пытался подтвердить порядок разделовзаголовок и элементы отображаются вместе с заголовком.Невозможно найти синтаксис в XCUITest для извлечения ячеек заголовка раздела и таблицы вместе в отображаемом порядке .Это связано с тем, что ячейки табличного представления идентифицируются с помощью XCUIApplication (). Tables.cells, а заголовки разделов - с помощью XCUIApplication (). Tables.otherElements.
Шаг: 1,
Я добавил отдельный идентификатор доступности для ячейки заголовка Раздела и ячейки, отображаемой между заголовками.
Шаг: 2,
Получить нормальныйСписок ячеек таблицы и список ячеек других элементов отдельно.
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
Примечание. Иногда другие элементы в таблицах могут повторяться. Лучше добавить идентификатор, отображаемый в ячейке, и извлечь его.
Шаг: 3,
Перебрать список и добавить его в двумерный массив, чтобы можно было добавить верхний или нижний колонтитул раздела в первый и последний столбец каждой строки.Добавление элементов в одно измерение может затруднить идентификацию элементов между двумя заголовками разделов.
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
}
}