Appium中的动态xpath

时间:2019-01-08 09:15:33

标签: xpath appium

尝试自动执行Android应用测试。但是,元素没有附加任何ID,只有xpaths。这些xpaths是动态的,可以根据屏幕尺寸和元素在屏幕上的位置进行更改。

我尝试使用contains()函数,但是在某些情况下没有通用的提名人。这似乎也不是最可靠的方法。

示例:

  

/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android。 support.v4.widget.DrawerLayout / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup [2] /android.view.ViewGroup/android.widget.ScrollView/android.view .ViewGroup / android.view.ViewGroup / android.view.ViewGroup [2] /android.view.ViewGroup/android.view.ViewGroup [4]

更改为

  

/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android。 support.v4.widget.DrawerLayout / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup [2] /android.view.ViewGroup/android.widget.ScrollView/android.view .ViewGroup / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup [2]

在屏幕上向下滚动时。

什么是最好,最可靠的解决方案?相同的测试脚本应在具有不同屏幕尺寸的多个设备上运行。

甚至建议在Appium中使用xpaths,还是应该去开发商那里为每个元素要求唯一的ID?

1 个答案:

答案 0 :(得分:0)

不建议使用xpath。您必须要求开发人员为要与之交互的每个元素放置唯一的ID。

推荐的使用方式

  • 通过 ID
  • 查找元素
  • 通过可访问性ID
  • 查找元素

如果您要使用 findElementByAccessibilityId(),则可以要求开发人员在元素中放置唯一的 cont-desc

MobileElemet element = driver.findElementByAccessibilityId("your cont-desc id")

,或者如果您想使用 findElementById(),也可以要求开发人员在元素中添加唯一的 id

MobileElemet element = driver.findElementById("element's id")
  

您可以使用 Appium Desktop Inspector uiautomatorviewer 来验证app元素是否包含 id cont-desc >