Меня удивляет, что отдельное приложение для iOS может как-то связаться с другим приложением и даже показать его экран.
Да! Приложения не должны быть в состоянии сделать это. Но существует специальное приложение, созданное только для тестирования, которое МОЖЕТ сделать это.
Способ, которым это делается, - использование платформы Apple XCUITest. Когда вы пишете XCUITest в XCode, он создает специальное приложение, которое может запустить ваше тестовое приложение, а затем связаться с ним с помощью методов XCUITest. Эти методы позволяют вам проверять элементы в представлении.
Чтобы создать дерево представлений, вы начинаете с корневого представления и перебираете дочерние элементы, создавая дерево с обходом дерева.
Обычно приложение XCUITest завершается при выполнении тестаСценарий завершается, что означает, что вы не сможете получить к нему доступ из настольного приложения для просмотра дерева при его обновлении. Если вы напишете свой тестовый скрипт для запуска бесконечного цикла и откроете сетевой порт для связи с внешним процессом, теперь вы можете создать свою программу просмотра. Это именно то, что делает Appium, поэтому я предлагаю вам проверить исходный код appium и, возможно, просто использовать это?
Больше информации в этом сообщении в блоге
[править]: О да, Appium использует проект FeD WebDriverAgent в качестве скрипта, который запускается в приложении. Таким образом, WebDriverAgent в основном представляет собой скрипт XCUITest, который запускает сервер и может принимать команды во время теста. Appium проделывает огромную работу, чтобы упаковать и упаковать его в специальный вид сопутствующего приложения, которое может получить доступ к вашему приложению, установить его на устройстве iOS и запустить тест. У WebDriverAgent есть команда, которая перебирает UIHierarchy и возвращает все дерево.