Как вы можете увидеть дерево XCUIElement?
Фон:
Я экспериментирую с тестированием уровня ui в iOS 9.0 с XCode GM.
Вопрос:
Есть ли команда в XCode GM, которая позволит вам увидеть "дерево" доступных элементов и их отношений? Что-то похожее на команду 'page' в Appium?
В идеале я мог бы запустить команду в отладчике, которая предоставила бы мне список элементов, доступных для выбора/манипуляции. В настоящее время вы можете использовать debugDescription на одном XCUIElement, но это дает вам информацию только для этого элемента.
Ответы
Ответ 1
Установите точку останова, где вы хотели бы видеть дерево... в типе отладчика:
po print(XCUIApplication().debugDescription)
Это распечатывает все, к чему имеет доступ XCUITesting. Вы также можете просто добавить это в свой тест:
func testTreeExample() {
XCUIApplication().buttons["login"].tap()
print(XCUIApplication().debugDescription)
XCUIApplication().buttons["next"].tap()
print(XCUIApplication().debugDescription)
}
Таким образом, если у вас возникают проблемы с поиском чего-либо, вы можете автоматически распечатать то, что приложение видит сразу после того, как вы что-то сделали.
Ответ 2
Это не совсем то, о чем вы просите, но Xcodes Accessibility Inspector упрощает просмотр вашей иерархии представлений с точки зрения того, какие элементы доступны через идентификаторы. (N.B. Это не "Ярлык" в панели специальных возможностей IB, это поле "Идентификатор".):
В Xcode 7.2 откройте Xcode- > Open Developer Tool- > Accessibility Inspector. (Возможно, вам нужно будет предоставить разрешение на использование приложения в Системные настройки.) Затем запустите приложение iOS из Xcode и наведите курсор на любой элемент пользовательского интерфейса в SIMULATOR. Вы увидите исчерпывающую информацию о типе элемента, описании, иерархии и т.д.
В любое время, когда вы регистрируете действия пользовательского интерфейса, и вывод не выглядит правильным, используйте инструмент, чтобы выяснить, какие описания доступности нужно добавлять, изменять или удалять. (Я провел пару дней, пытаясь получить глубоко внедренный UISegmentedControl для изменения с помощью жгута тестирования пользовательского интерфейса, и проблема стала очевидной после того, как я выяснил, как использовать средство проверки доступности.)
Спасибо людям за shinobicontrols.com за отличный совет!
Ответ 3
Я бы предложил выбрать из строки меню: Debug > View Debugging > Capture View Hierarchy при запуске в debug. Не только вы визуально представляете представления, но и навигатор отладки на левой стороне показывает иерархию. Это может быть не одно-на-один с перспективой тестирования пользовательского интерфейса, но это может быть очень полезно. Надеюсь, что это поможет.
Ответ 4
Appium делает это с помощью Facebook WebdriverAgent. Насколько я могу судить, то, как они это делают, по сути, начинается с корневого элемента приложения и собирает информацию о каждом дочернем элементе, а затем повторяется.