针对不同的Android操作系统版本显示了不同的xpath

时间:2019-09-24 08:29:41

标签: android testing automation appium appium-android

我正在处理本机Android应用程序。我需要自动化该过程,为此,我正在使用Appium获取元素信息,例如xpaths和id等。我的目标是在所有android版本中的每个android设备上自动化该过程,但是我遇到了问题。我正在使用两个Android版本,一个是6.0.1,另一个是9.0,我的问题是当我连接Android 6.0.1时,它向我显示了元素的xpath,例如

xpath = "//android.widget.EditText[@text='username']"

对于同一字段,在Android 9.0版上其显示为:

/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.RelativeLayout/android.widget.LinearLayout/android.webkit.WebView/android.webkit.WebView/android.view.View[5]/android.view.View[2]/android.view.View/android.view.View/android.view.View[2]/android.widget.EditText

很难使用。

为什么两个Android版本的xpath差异都很大。另外,我在Appium中发现了一些异常行为,因为输入字段中的“提示”在Android 6.0.1中可用,但是对于同一字段,“提示”在android 9.0中不可用。

1 个答案:

答案 0 :(得分:0)

使用ID,类,名称或其他特定属性标识您的元素。

仅当选择器确实很复杂和/或包含动态数据时,才应将XPath用作最后的选择。但是即使那样,您通常也可以找出一个更强大的选择器。