Проблема с индексом Android XPath

#java #android #testing #xpath #appium

#java #Android #тестирование #xpath #appium

Вопрос:

Очень новое для тестирования Android.
Я наткнулся на этот Xpath

 xpath: (//android.widget.ImageView[1])[3]
  

Я знаю, что в ImageView 1 «1» — это индекс элемента.
Что здесь [3]???

Обновить:

Я запускаю тест (мобильное приложение). Указанный выше XPath заключается в том, чтобы нажать на значок звонка.
Он отлично нажал на значок звонка.
Но сегодня, когда я запускаю свой тест, он не нажимает на значок звонка, вместо этого он нажимает на изображение профиля пользователя.

введите описание изображения здесь

Используя appium, я нашел xpath значка колокольчика, как показано ниже:

 xpath: /hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[1]/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup[1]/android.view.ViewGroup[2]/android.view.ViewGroup/android.widget.ImageView
  

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

Являются ли оба Xpath одинаковыми??
Почему этот новый xpath такой длинный? есть ли способ сократить это??
Любая помощь действительно ценится!!!

Комментарии:

1. [3] является ли номер вхождения

2. @JaSON Пожалуйста, проверьте мой обновленный вопрос. Был бы очень признателен за ваш вклад в это.

Ответ №1:

Выражение //android.widget.ImageView[1] выбирает каждое android.widget.ImageView , которое является первым дочерним элементом своего родителя. В общем случае это приведет к выбору набора узлов. [3] Выбирается третий узел в этом наборе.

Комментарии:

1. Спасибо. Пожалуйста, проверьте мой обновленный вопрос. Был бы очень признателен за ваш вклад в это.

2. Извините, ваш новый вопрос выходит за рамки моей области знаний.

Ответ №2:

Вы получаете абсолютный xpath, используя appium (который вы указали выше) и тот, который вы используете, как // android.widget.ImageView[1])[3] является относительным xpath значка.

Абсолютный xpath: это путь от корневого элемента к конкретному элементу. Относительный xpath: это ссылочный путь к элементу или конкретный путь к элементу.

Ответ №3:

Попробуйте получить доступ к кнопке bell, используя имя класса.

(//*[@class=»Имя класса»])[2]

   (//*[@class="android.widget.ImageView"])[2]