APPIUM iOS 13 и выше: Атрибут «Value» XCUIElementTypeTextField показывает «OBJ» как предполагаемое фактическое значение. - PullRequest
0 голосов
/ 08 мая 2020

Проблема : для элемента «XCUIElementTypeTextField» (на iOS 13 и выше) значение отображается как «OBJ» в Appium Inspector и программно, когда я пытался использовать значение Element.GetAttribute (» ") Я получил " ". См. Прикрепленный снимок экрана и источник страницы.

Я пытался получить источник страницы, но даже источник страницы не содержит значения для «XCUIElementTypeTextField».

Но когда я попробовал на устройстве с ОС 12.4.1, он отлично работает и отображает значение в инспекторе, а также в источнике страницы.

Интересно, сталкивается ли кто-нибудь с такой же проблемой?

Конфигурация: * версия Appium (или git ревизия), в которой обнаружена проблема: 1.17.0 * Настольная ОС / версия, используемая для запуска Appium: macOS Catalina, 10.15.4 * Npm или менеджер пакетов Yarn: * Мобильная платформа / версия в процессе тестирования: iOS * Реальное устройство или эмулятор / симулятор: Реальное устройство (iPhone X 13.4.1) * Java Клиент: 7.3.0 * Xcode: 11.4 * ОС устройства: 13.4.1

Скриншот Appium Inspector

Фрагмент исходного кода страницы:

                            </XCUIElementTypeStaticText>
                          </XCUIElementTypeOther>
                          <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="16" y="159" width="343" height="75">
                            **<XCUIElementTypeTextField type="XCUIElementTypeTextField" enabled="true" visible="true" x="16" y="161" width="343" height="53" label="" value="">
                            </XCUIElementTypeTextField>**
                            <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="28" y="159" width="50" height="30" name="Username" label="Username">
                              <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" enabled="true" visible="true" x="28" y="167" width="50" height="14" name="Username" label="Username" value="Username">
                              </XCUIElementTypeStaticText>
                            </XCUIElementTypeOther>
                          </XCUIElementTypeOther>
                          <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="16" y="232" width="343" height="75">
                            <XCUIElementTypeSecureTextField type="XCUIElementTypeSecureTextField" enabled="true" visible="true" x="16" y="234" width="343" height="53" label="" value=" ">
                            </XCUIElementTypeSecureTextField>
                            <XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="28" y="232" width="49" height="30" name="Password" label="Password">
                              <XCUIElementTypeStaticText type="XCUIElementTypeStaticText" enabled="true" visible="true" x="28" y="240" width="49" height="14" name="Password" label="Password" value="Password">

1 Ответ

0 голосов
/ 28 мая 2020

У меня возникла аналогичная проблема. iOS 13 добавляет лишние элементы XCUIElementTypeOther, которые изменяют путь по сравнению с iOS 12.

Чтобы решить эту проблему для моего варианта использования, я добавил уникальный идентификатор к элементам для прямого доступа (более быстрый поиск) и в случай, когда уникальный идентификатор был невозможен (например, WebView), я изменил селектор, чтобы полагаться на первое совпадение.

например, в Appium 1.17.0:

//XCUIElementTypeTextField[@name="foo"] для прямого поиска одного элемента.

//XCUIElementTypeWebView для поиска всех множественных совпадений.

Предполагая, что на экране есть только один WebView, на iOS 12 этот общий c поиск дает один элемент, тогда как, как и на iOS 13, он дает 3 (вложенных друг в друга). К счастью, capabilities.useFirstMatch возвращает его к единице.

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