Xcode 7, UI-Testing: работа с UITableView
Я столкнулся с одной проблемой, используя инфраструктуру UITesting
для xCode, которую Apple внедрила на WWDC 2015.
У меня есть UITableView, и эта таблица содержит много ячеек. Также у меня есть NSArray с названиями ячеек - если заголовок ячейки содержится в NSArray, эта ячейка должна быть задействована.
Моя проблема в том, что я не могу прокручивать представление таблицы для конкретной ячейки, потому что в фреймворке нет метода работы с табличными представлениями, только проведите жесты (вниз, вверх).
Может кто-нибудь знает, как я могу использовать конкретную ячейку в виде таблицы? Или как я могу прокручивать представление таблицы для конкретной ячейки?
Потому что, когда я вызываю метод tap()
для ячейки, которые не видны на экране, ничего не происходит.
Спасибо заранее!
Ответы
Ответ 1
Это сработало для меня:
XCUIElementQuery *tablesQuery = self.app.tables;
XCUIElementQuery *cellQuery = [tablesQuery.cells containingType:XCUIElementTypeStaticText
identifier:@"Work"];
XCUIElementQuery* cell = [cellQuery childrenMatchingType:XCUIElementTypeStaticText];
XCUIElement* cellElement = cell.element;
[cellElement tap];
Для прокрутки таблицы используйте:
XCUIElementQuery *tablesQuery = self.app.tables;
XCUIElement* table = tablesQuery.element;
[table swipeUp];
Ответ 2
Быстрая версия для @Евгения Женя Гордин ответ:
Обновлено для Swift 4
let tablesQuery = app.tables
let cellQuery = tablesQuery.cells.containing(.staticText, identifier: "MyCell")
let cell = cellQuery.children(matching: .staticText)
let cellElement = cell.element
cellElement.tap()
let tableElement = tablesQuery.element
tableElement.swipeUp()
Ответ 3
Недавно я столкнулся с подобной проблемой.
Опция, которую вы можете попробовать, - это поиск определенного заголовка для ячейки в таблице и нажмите на нее,
например: -
XCUIApplication().tables.staticTexts["identifier"].tap()
или
XCUIApplication().tables.cells.staticTexts["identifier"].tap()
Где "идентификатор" - это название ячейки, к которой вы пытаетесь нажать.
Надеюсь, это поможет!
Ответ 4
У меня была такая же точная проблема!
Сначала я просто нажимал на метку ячейки через запрос .staticTexts
. Здесь другой способ, который работал у меня:
В cellForRowAtIndexPath
, где вы создаете экземпляр ячеек, дайте им каждый уникальный идентификатор, в зависимости от их titleLabel
или другого свойства.
Пример:
cell.accessibilityIdentifier = [NSString stringWithFormat:@"myCellType%@", cell.colorIdentifier];
Затем, вернувшись в тестовый класс, попробуйте следующее: (Немного подробный, потому что это помогло мне лучше понять)
XCUIApplication *application = [XCUIApplication new];
XCUIElementQuery *tablesQuery = application.tables;
XCUIElementQuery *allCellsQuery = tablesQuery.cells;
XCUIElementQuery *specificCellQuery = [cellQuery matchingIdentifier:@"myCellTypeSaffron"];
XCUIElement *cell = specificCellQuery.element;
[cell tap];
Конкретная ячейка решает, когда она взаимодействует.
Надеюсь, что это поможет!