首页 > 解决方案 > 针对不同的 Android 操作系统版本显示不同的 xpath

问题描述

我正在开发原生 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 中不可用。

标签: androidtestingautomationappiumappium-android

解决方案


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

XPath 应该只作为最后的手段,或者如果选择器非常复杂和/或包含动态数据。但即便如此,您通常也可以找出更强大的选择器。


推荐阅读