Android XPath索引问题

问题描述

对于Android测试来说是新手。
我碰到了这个Xpath

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

我知道在ImageView 1中,“ 1”是元素的索引。
这里的[3]是什么?

更新

我正在运行测试(移动应用程序)。上面的XPath是点击Bell图标。
它确实完美地点击了铃声图标。
但是今天,当我运行测试时,它没有点击“贝尔”图标,而是点击了用户“个人资料图片”。

enter image description here

使用鸦片,我找到了Bell图标的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时,将单击Bell图标。

两个Xpath都一样吗?
为什么这个新的xpath这么长?有什么办法可以缩短??
真的很感谢任何帮助!

解决方法

表达式//android.widget.ImageView[1]选择每个android.widget.ImageView作为其父级的第一个孩子。通常,这将选择一组节点。 [3]选择该集合中的第三个节点。

,

尝试使用班级名称访问响铃按钮。

(// * [@ class =“类名”])[2]

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

您将使用appium(如上所述)获得绝对的xpath,而您使用的//appandroid.widget.ImageView[1])[3]是图标的相对xpath。>

绝对xpath:这是从根元素到特定元素的路径。 相对xpath:是元素的参考路径或元素的特定路径。