Как работают инспекторы приложений пользовательского интерфейса (например, в Appium)? - PullRequest
0 голосов
/ 15 октября 2019

В Appium есть способ проверки иерархии представления приложения с помощью инспектора. Я заинтересован в его создании сам.

Я знаю краткий ответ: для этого используется какой-то веб-драйвер. Но как? Меня удивляет, что отдельное приложение для iOS может как-то связаться с другим приложением и показать даже его экран.

Как это работает под капотом? или как приложение iOS взаимодействует с инспектором пользовательского интерфейса для отправки снимков экрана и иерархии?

1 Ответ

1 голос
/ 30 октября 2019

Меня удивляет, что отдельное приложение для iOS может как-то связаться с другим приложением и даже показать его экран.

Да! Приложения не должны быть в состоянии сделать это. Но существует специальное приложение, созданное только для тестирования, которое МОЖЕТ сделать это.

Способ, которым это делается, - использование платформы Apple XCUITest. Когда вы пишете XCUITest в XCode, он создает специальное приложение, которое может запустить ваше тестовое приложение, а затем связаться с ним с помощью методов XCUITest. Эти методы позволяют вам проверять элементы в представлении.

Чтобы создать дерево представлений, вы начинаете с корневого представления и перебираете дочерние элементы, создавая дерево с обходом дерева.

Обычно приложение XCUITest завершается при выполнении тестаСценарий завершается, что означает, что вы не сможете получить к нему доступ из настольного приложения для просмотра дерева при его обновлении. Если вы напишете свой тестовый скрипт для запуска бесконечного цикла и откроете сетевой порт для связи с внешним процессом, теперь вы можете создать свою программу просмотра. Это именно то, что делает Appium, поэтому я предлагаю вам проверить исходный код appium и, возможно, просто использовать это?

Больше информации в этом сообщении в блоге

[править]: О да, Appium использует проект FeD WebDriverAgent в качестве скрипта, который запускается в приложении. Таким образом, WebDriverAgent в основном представляет собой скрипт XCUITest, который запускает сервер и может принимать команды во время теста. Appium проделывает огромную работу, чтобы упаковать и упаковать его в специальный вид сопутствующего приложения, которое может получить доступ к вашему приложению, установить его на устройстве iOS и запустить тест. У WebDriverAgent есть команда, которая перебирает UIHierarchy и возвращает все дерево.

...