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

标签 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 中不可用。

最佳答案

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

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

关于android - 针对不同的 Android 操作系统版本显示不同的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58076108/

相关文章:

android - 如何将截图从模拟器复制到PC?

android - 我如何在 Android 的 AVD 上安装 APK 文件?

java - 没有源代码的android应用程序中的方法覆盖

java - 我的 Junit 测试不工作

java - TestNG 中的动态 @Test 生成

c++ - 如何从存储在其他文件夹中的 C++ 运行 linux 可执行文件

java - 单元测试火后忘记方法

android - 带有参数化 IN (...) 子句的 Sqlite UPDATE

安卓工作室错误 :Adb connection Error:An existing connection was forcibly closed by the remote host

python - 在没有我告诉它的情况下返回 true 或 false ... python 3