Как работать со списками утилизации

Я создаю набор тестов пользовательского интерфейса для приложения iOS, используя XCUITest api. Приложение использует списки повторного использования, и мне нужно получить доступ к определенным ячейкам этих списков во время моих тестов, как показано в приведенном ниже коде:

let cells: XCUIElementQuery = app.descendants(matching: XCUIElement.ElementType.any).matching(identifier: "cells_accessibility_id") let cell: XCUIElement = cells.element(boundBy: index) cell.tap()

Моя проблема в том, что, поскольку это список повторного использования, как только он прокручивается по какой-либо причине во время теста (например, анимация), ячейки выгружаются, «ячейки» не возвращают все элементы, а затем «индекс» не получает правильного ячейка из списка или становится за пределы.

Есть ли другой способ получить весь список независимо от видимости элемента? Или мне нужно изменить свои тесты / попробовать другой подход?


person arvere    schedule 24.09.2018    source источник


Ответы (1)


Вы не можете полагаться на индексы повторно используемых ячеек, как вы указали, однако обычно есть способ устранить зависимость от необходимости тестировать ячейки по определенным индексам. Решение будет зависеть от того, что вы хотите протестировать, но вот несколько возможных альтернативных стратегий:

  • Если ваши ячейки таблицы всегда одинаковы, вы можете дать каждой из них жестко запрограммированный идентификатор на основе их содержимого.
  • Если в ячейках таблицы есть динамическое содержимое, вы можете использовать данные теста-заглушки для каждого теста, чтобы на экране была только одна ячейка (та, которая имеет отношение к тесту).
  • Если вы можете идентифицировать нужную ячейку по представлениям, содержащимся в ячейке, вы можете искать в каждой ячейке соответствующие представления, прежде чем выбирать ее, вместо того, чтобы полагаться на ее индекс.
person Oletha    schedule 25.09.2018
comment
То, что я тестирую, на самом деле является редактором содержимого, поэтому ячейки не имеют конкретных представлений, чтобы различать их, нет возможности жестко запрограммировать идентификаторы, и их содержимое создается самим тестом. но в любом случае, я просто хочу быть уверен, что я ничего не могу с этим поделать, поэтому я могу изменить объем своих тестов и двигаться дальше (я новичок в автоматизации тестирования, кстати) - person arvere; 25.09.2018