Xcode UITest - невозможно найти кнопки в ячейке, содержащей пары значений ключа

У меня возникли проблемы с поиском способа уникальной идентификации ряда кнопок (настраиваемых флажков), которые существуют в ячейке. Ячейка содержит данные в виде серии пар ключ-значение с кнопкой-флажком, привязанной к каждой паре ключ-значение. Проблема в том, что ячейка содержит значения для ВСЕХ пар ключ-значение, поэтому я, похоже, не могу найти только одну из кнопок, поскольку все они идентичны.

Поскольку код UITest анализирует данные, которые должны отображаться в приложении, я проверяю пользовательский тип, связанный с парой ключ-значение. Если это .CheckboxInput, то он выполняет следующий код:

else if case KeyValueType.CheckboxInput = currentType {
    let currentCheckboxInput = currentKeyQuery.buttons["step unchecked"]
    currentCheckboxInput.tap()
    XCTAssert(currentKeyQuery.buttons["step checked"].exists)
}

Для справки, currentKeyQuery переходит в ячейку и запрашивает текст, соответствующий ключу пары ключ-значение. Я не могу нажать кнопку флажка, потому что он находит все существующие в ячейке, а не только тот, который связан с текущей парой ключ-значение, с которой он тестируется. Есть ли способ связать кнопку только с текущей парой значений ключа, поскольку все флажки существуют в одной ячейке?


person droff75    schedule 25.02.2016    source источник
comment
Я не могу понять: у вас есть пары ключ-значение. Это как SomeFlag-true? Например. вы можете установить ключ как accessibilityIdentifier (если он уникален) и значение как accessibilityValue. После этого вы можете искать по значению и нажимать по идентификатору.   -  person Che    schedule 26.02.2016
comment
@Che Пары ключ-значение - это просто способ отображения данных, связанных друг с другом, в одной ячейке. Код, предоставляющий данные для ячейки, выглядит следующим образом: KeyValueGroup(keyValues: [KeyValue(key: "key1", value: "value1", type: .CheckboxInput(checkboxTitle: "Title1") В основном существует ряд пар ключ-значение в одной группе ключ-значение, которая отображается в одной ячейке. Если это тип .CheckboxInput, то он отображает кнопку флажка и отображает соответствующий заголовок. Поскольку все они существуют в одной ячейке, я не могу их различить.   -  person droff75    schedule 26.02.2016


Ответы (1)


Я действительно смог понять это, хотя я не могу объяснить, почему это работает. Я изменил currentCheckboxInput на currentKeyQuery.childrenMatchingType(.Button).matchingIdentifier("step unchecked").elementBoundByIndex(0)

person droff75    schedule 26.02.2016