В XCUITest, Синтаксис для поиска порядка отображения ячеек табличного представления и заголовков разделов - PullRequest
0 голосов
/ 26 ноября 2018

При запросе элементов в XCUITest он обычно возвращает элементы в порядке их отображения.

Например: XCUIApplication().tables.cells.allElementBoundByIndex, вернет массив [XCUIElement] в том порядке, в котором он был отображен в пользовательском интерфейсе.

Невозможно получить заголовки разделов и ячейки вместе в указанном порядке.

1 Ответ

0 голосов
/ 26 ноября 2018

Чтобы найти список ячеек, отображаемых между каждым разделом, мне пришлось использовать 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...