Парсинг XML в ZennoDroid

rdjt

Client
Регистрация
01.07.2022
Сообщения
28
Благодарностей
11
Баллы
3
Доброго времени суток!

Борюсь второй день с такой проблемой, обрабатываю всплывающее окно с ошибкой в приложении следующими кубиками:

- Получить структуру XML;
- Парсинг XML по XPath ошибки /hierarchy/FrameLayout[1]/LinearLayout[1]/FrameLayout[1]/FrameLayout[1]/FrameLayout[1]/ViewGroup[5]/ViewGroup[1]/ViewGroup[1]/ViewGroup[1]/View[3] (это кнопка "ОК", чтобы её закрыть), если такой XPath не найден (ошибка всплывает не всегда) выходит по красной на следующий шаг в шаблоне;
- Тач по тому же Xpath, если парсинг вышел по зелёной и переход к следующему шагу в шаблоне;
118232

В ProjectMaker прогнал шаблон за время тестов более сотни раз, никаких ошибок не возникало, но при запуске в ZennoDroid, парсинг судя по всему всегда выходит по зелёной, т.к. всегда крашится на событии тач, которое следует после парсинга, хотя тач имеет тот же XPath :-)

Такого XPath нет ни на одной странице, он появляется в дереве елементов только при возникновении всплывающего окна, как обработать ошибку по другому к сожалению не придумал, в апке нет текстовых блоков, чтобы использовать поиск по тексту, вместо тача пробовал делать клик по картинке, тоже крашиться на этом шаге.

Буду благодарен за любую помощь :bt:
 
Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 820
Благодарностей
2 030
Баллы
113
Проверяйте что попадает в переменные при парсинге XML и делайте свою логику ветвления при ошибках, каких то значниях после парсинга XML или поиске.
 

rdjt

Client
Регистрация
01.07.2022
Сообщения
28
Благодарностей
11
Баллы
3
Проверяйте что попадает в переменные при парсинге XML и делайте свою логику ветвления при ошибках, каких то значниях после парсинга XML или поиске.
Благодарю, крайне мало опыта работы с XPath, посмотрел содержимое переменных:
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<hierarchy index="0" class="hierarchy" rotation="0" width="720" height="1280">
<FrameLayout index="0" package="com.facebook.lite" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][720,1280]" displayed="true">
<LinearLayout index="0" package="com.facebook.lite" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][720,1280]" displayed="true">
<FrameLayout index="0" package="com.facebook.lite" class="android.widget.FrameLayout" text="" resource-id="android:id/content" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true">
<FrameLayout index="0" package="com.facebook.lite" class="android.widget.FrameLayout" text="" resource-id="com.facebook.lite:id/main_layout" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true">
<FrameLayout index="0" package="com.facebook.lite" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true">
<ViewGroup index="2" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true" />
<ViewGroup index="3" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true" />
<ViewGroup index="4" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true" />
<ViewGroup index="5" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1208]" displayed="true">
<View index="0" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[304,54][417,86]" displayed="true" />
<View index="1" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[24,130][697,226]" displayed="true" />
<View index="2" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,232][702,264]" displayed="true" />
<MultiAutoCompleteTextView index="3" package="com.facebook.lite" class="android.widget.MultiAutoCompleteTextView" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="true" password="false" scrollable="false" selected="false" bounds="[258,295][461,339]" displayed="true" />
<ViewGroup index="4" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,359][702,413]" displayed="true">
<View index="0" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[341,370][380,402]" displayed="true" />
</ViewGroup>
<View index="5" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,431][669,495]" displayed="true" />
<ViewGroup index="6" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[20,455][184,495]" displayed="true" />
<ViewGroup index="7" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[543,431][665,471]" displayed="true" />
<View index="8" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,513][669,545]" displayed="true" />
<View index="9" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,563][669,595]" displayed="true" />
<View index="10" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,613][669,645]" displayed="true" />
<View index="11" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,1146][720,1178]" displayed="true" />
</ViewGroup>
</FrameLayout>
</FrameLayout>
</FrameLayout>
</LinearLayout>
</FrameLayout>
</hierarchy>
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<hierarchy index="0" class="hierarchy" rotation="0" width="720" height="1280">
<FrameLayout index="0" package="com.facebook.lite" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][720,1280]" displayed="true">
<LinearLayout index="0" package="com.facebook.lite" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][720,1280]" displayed="true">
<FrameLayout index="0" package="com.facebook.lite" class="android.widget.FrameLayout" text="" resource-id="android:id/content" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true">
<FrameLayout index="0" package="com.facebook.lite" class="android.widget.FrameLayout" text="" resource-id="com.facebook.lite:id/main_layout" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="true" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true">
<FrameLayout index="0" package="com.facebook.lite" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true">
<ViewGroup index="1" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true" />
<ViewGroup index="2" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true" />
<ViewGroup index="3" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1280]" displayed="true" />
<ViewGroup index="4" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1208]" displayed="true">
<View index="0" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[304,54][417,86]" displayed="true" />
<View index="1" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[24,130][697,226]" displayed="true" />
<View index="2" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,232][702,264]" displayed="true" />
<MultiAutoCompleteTextView index="3" package="com.facebook.lite" class="android.widget.MultiAutoCompleteTextView" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="true" password="false" scrollable="false" selected="false" bounds="[258,295][461,339]" displayed="true" />
<ViewGroup index="4" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,359][702,413]" displayed="true">
<View index="0" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[341,370][380,402]" displayed="true" />
</ViewGroup>
<View index="5" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,431][669,495]" displayed="true" />
<ViewGroup index="6" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[20,455][184,495]" displayed="true" />
<ViewGroup index="7" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[543,431][665,471]" displayed="true" />
<View index="8" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,513][669,545]" displayed="true" />
<View index="9" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,563][669,595]" displayed="true" />
<View index="10" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[18,613][669,645]" displayed="true" />
<View index="11" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,1146][720,1178]" displayed="true" />
</ViewGroup>
<ViewGroup index="5" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1208]" displayed="true">
<ViewGroup index="0" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1208]" displayed="true">
<ViewGroup index="0" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,36][720,1208]" displayed="true">
<ViewGroup index="0" package="com.facebook.lite" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[22,522][698,722]" displayed="true">
<View index="0" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[43,543][677,575]" displayed="true" />
<View index="1" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[43,592][677,627]" displayed="true" />
<View index="2" package="com.facebook.lite" class="android.view.View" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[22,648][698,708]" displayed="true" />
</ViewGroup>
</ViewGroup>
</ViewGroup>
</ViewGroup>
</FrameLayout>
</FrameLayout>
</FrameLayout>
</LinearLayout>
</FrameLayout>
</hierarchy>

Пытаюсь решить так:
Парсинг //ViewGroup[@index='5']/ViewGroup[1]/ViewGroup[1]/ViewGroup[1] - (само окно с ошибкой)
Тач //ViewGroup[@index='5']/ViewGroup[1]/ViewGroup[1]/ViewGroup[1]/View[@index='2'] - (кнопка "ОК" в окне с ошибкой)

Если вас не затруднит, подскажите пожалуйста, всё ли корректно?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 820
Благодарностей
2 030
Баллы
113
Благодарю, крайне мало опыта работы с XPath
Тогда лучше повысить свой уровень знаний, и станете лучше понимать как работать с элементами. Для Web и XML принципы составления xpath одинаковые. На форуме есть хорошие статьи по теме, и на ютуб тоже. Не поленитесь изучить теорию и повысить свои практические навыки.

В случае с фб там в лайт версии нет текста с элементами и дерево формируется с защитой.

Видно, что текста элемента просто нет в дереве элементов

118290
 
Последнее редактирование:

rdjt

Client
Регистрация
01.07.2022
Сообщения
28
Благодарностей
11
Баллы
3
Тогда лучше повысить свой уровень знаний, и станете лучше понимать как работать с элементами. Для Web и XML принципы составления xpath одинаковые. На форуме есть хорошие статьи по теме, и на ютуб тоже. Не поленитесь изучить теорию и повысить свои практические навыки.

В случае с фб там в лайт версии нет текста с элементами и дерево формируется с защитой.

Видно, что текста элемента просто нет в дереве элементов

Посмотреть вложение 118290
Да, поэтому по тексту собственно и не ищу)
В итоге XPath был правильным, проблема в самом ZD, он выводит любой парсинг XML с обработкой XPath по зелёной ветке, даже если такого XPath нет. При этом в PM всё отрабатывает корректно, нашел XPath - вышел по зелёной, не нашел - вышел по красной.

Для проверки создал простой шаблон который открывает Chrome, получает XML, парсит этот XML с обработкой по несуществующему XPath //*[@text="uknown"] (тобишь это 100% выход по красной).
118302
118305
118306

Отказался от обработки XPath через парсинг XML в пользу другого кубика, всё заработало как нужно.
 
  • Спасибо
Реакции: Lest

radv

Client
Регистрация
11.05.2015
Сообщения
3 820
Благодарностей
2 030
Баллы
113
Отказался от обработки XPath через парсинг XML в пользу другого кубика, всё заработало как нужно.
Еще было замечено, что некоторые приложения (в том числе фб лайт) могут менять структуру дерева элементов и визуально отличий нет, а дерево отличается.
 
  • Спасибо
Реакции: rdjt

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)