UI Testing Xcode 7- не может получить доступ к элементу внутри подпредставления
Я пытаюсь получить доступ к элементу внутри подпредставления и считаю, что это невозможно.
Иерархия:
Контроллер просмотра:
Я хочу получить доступ к текстовому полю zipCodeEntered. У меня есть метка доступности с именем "zipCodeEntered".
Когда я пытаюсь записать автоматизацию, она регистрирует только суперпредставление "userEnterView", а не фактическое текстовое поле, к которому я могу подключиться.
Я печатаю "app.otherElements [SUPER_VIEW_NAME].debugDescription", чтобы увидеть, какие элементы находятся в этой иерархии, и он не печатает ни одного.
Любые идеи относительно того, почему я не могу получить доступ к этим элементам/как я могу получить к ним доступ? ![enter image description here]()
Ответы
Ответ 1
Подразделы недоступны, поскольку родительский вид не является видом контейнера. Из раздела Как сделать доступным ваше приложение для iOS в Руководстве по программированию доступности:
С точки зрения доступности, пользовательский вид представляет собой либо индивидуальный вид, либо представление контейнера. Отдельный вид не содержит других видов, которые должны быть доступны.
С другой стороны, представление контейнера содержит другие элементы, с которыми пользователи могут взаимодействовать.
Чтобы сделать доступным представление в представлении родительского представления, сообщите UIAccessibility
, что он является контейнером доступности, возвращая NO из -isAccessibilityElement
и реализуя методы протокола UIAccessibilityContainer
.
Ответ 2
Единственное, что исправило это для меня, было установить флажок "Доступность", чтобы включить его в Интерфейсном Разработчике.
![enter image description here]()
Если не работает в IB, попробуйте установить для свойства isAccessibilityElement
представления isAccessibilityElement
true.
Надеюсь, это поможет!
Ответ 3
Я также столкнулся с этой проблемой в своем UITableView. У моей ячейки есть контейнерView (UIView), который имеет subviews (TextView, UIButton...) и collectionView с его ячейками.
Я попробовал принятый ответ, но он не сработал. (UI Recorder или ручной код не распознал мои подэлементы). Но иногда я обнаружил, что UITest внезапно узнал мои подэлементы, когда я вызвал что-то, чтобы обновить таблицу.
Так что прямо сейчас я знаю, что UITest не может найти мои subviews, я вызываю tableView.reloadData
, чтобы обновить представление, а затем все проблемы исчезли.
В любом случае, это всего лишь обходной путь, я надеюсь, что Apple сможет исправить его как можно скорее.