Как я могу заставить Xcode находить элементы в веб-просмотре для гибридного приложения? - PullRequest
1 голос
/ 25 января 2020

Я являюсь SDET на моей текущей должности, и меня попросили выяснить, возможно ли использовать Xcode и XCUITest для автоматизации тестирования пользовательского интерфейса гибридного приложения. У нас есть один, который мы создаем внутри, который имеет встроенную оболочку для других приложений, которые извлекаются как кокопод. Одно из этих приложений основано на веб-просмотре, и оно вызывает у меня проблемы.

Мне удобно использовать Xcode и Swift для написания автоматизации пользовательского интерфейса в целом, и мне удобно использовать отладчик для анализа элементов приложения иерархия. Однако для этого приложения, в частности, я не могу видеть элементы, которые являются потомками веб-представления.

Все, что я получаю, когда я выполняю команду po в отладчике, это блок, который выглядит следующим образом :

WebView, 0x600002d6c000, {{0.0, 82.0}, {1024.0, 1284.0}}
    WebView, 0x600002d6c0e0, {{0.0, 82.0}, {1024.0, 1284.0}}
        WebView, 0x600002d6c1c0, {{0.0, 82.0}, {1024.0, 1284.0}}
        Other, 0x600002d6c2a0, {{991.0, 87.5}, {30.0, 1267.5}}, label: 'Vertical scroll bar, 2 pages', value: 0%
        Other, 0x600002d6c380, {{11.0, 1333.0}, {1002.0, 30.0}}, label: 'Horizontal scroll bar, 1 page', value: 0%

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

Теперь я также знаю, по поиску в Google, что на данный момент, если я запускаю свое приложение в симуляторе, я могу go открыть Safari и посмотреть исходный код веб-просмотра. Я могу подтвердить, что это работает для меня. Однако на самом деле это не говорит мне, могу ли я получить доступ к элементам веб-просмотра из автоматизации XCUITest, и если да, то как мне к ним обращаться. Поскольку я не вижу их в моем отладчике, мне очень сложно их найти. Попытка выполнить сеанс UI Recorder не работает, так как UI Recorder также не может распознать наличие элементов.

Последнее, что я также знаю по поиску в Google, - это то, что подавляющее большинство страниц, которые я Мы нашли, в том числе и здесь, на Stack Overflow, разговор о выполнении автоматизации на основе веб-просмотра в Appium. Однако меня специально попросили посмотреть, возможно ли это, в частности, в XCUITest.

Итак, мой общий вопрос: возможно ли ? Есть ли что-то, чего мне здесь не хватает в плане того, как добраться до потомков веб-представления?

Я видел обсуждение того, что Appium нужно переключать «контексты» с нативного на контекст веб-просмотра, но я не поиск любых ссылок на эквивалентную концепцию в сфере XCUITest. И я подхожу полностью dry в любых других полезных данных.

Редактирование, чтобы добавить быстрое замечание:

Я только что выполнил поиск на форумах разработчиков Apple, и я вижу комментарий от кого-то, кто на самом деле может быть root моей проблемы. Они говорят:

Та же проблема здесь, похоже на ios: 13.3 Элемент Webview пуст: / в то время как на iOS 13.1 и 13.2 Webview поставляется со всеми элементами внутри Wbview, любая помощь?

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

Так что с этим дополнением кто-нибудь может подтвердить, могу ли я Вы действительно столкнулись с изменением или ошибкой функции XCode?

Еще одно редактирование, чтобы добавить подробности о моей среде разработки, так как они имеют отношение к вопросу:

  • Ма c работает под управлением последней версии Catalina, 10.15.2
  • Мой Xcode - 11.3.1
  • Я тестирую на симуляторах, а также на физическом устройстве под управлением iPadOS 13.3, хотя Я также собираюсь выяснить, не повторяется ли проблема с 13,2

Заранее благодарен за любую помощь!

1 Ответ

1 голос
/ 25 января 2020

Я отвечаю на свой вопрос только потому, что это может помочь кому-то еще, но если у кого-то еще есть соответствующие данные, пожалуйста, скажите об этом!

Под руководством ссылки на форумы Apple Developer, на которую я ссылался в своем посте , Я смог подтвердить, что я НЕ воспроизводил мою проблему, если я собираю наше приложение на 13.2 вместо 13.3.

Так что я, похоже, сталкиваюсь с ошибкой в ​​Xcode 11.3.1 или в iPadOS 13.3 здесь , Если я соберусь против 13.2, я прекрасно вижу потомков моего веб-просмотра.

Любые другие инженеры SDET / QA, если у вас возникла похожая проблема, и у вас есть возможность сделать это, Вы должны загрузить симулятор 13.2 и посмотреть, сможете ли вы вместо этого протестировать его. Или против устройства под управлением 13.2, если оно у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...