我正在开发原生 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 中不可用。
最佳答案
使用 ID、类、名称或其他特定属性标识您的元素。
XPath 只能作为最后的手段使用,或者如果选择器非常复杂和/或包含动态数据。但即便如此,您通常也可以找到更强大的选择器。
关于android - 针对不同的 Android 操作系统版本显示不同的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076108/