【问题标题】:Different xpaths are showing for different Android OS Versions针对不同的 Android 操作系统版本显示不同的 xpath
【发布时间】:2020-01-24 07:55:59
【问题描述】:

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

【问题讨论】:

    标签: android testing automation appium appium-android


    【解决方案1】:

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

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

    【讨论】:

    • 应用程序的问题是它的元素没有任何 id 或任何其他我们可以使用的属性。我们正在使用自定义 xpath,并在需要时使用“实例”来识别元素。但同样,“instance”值在不同的 Android 版本中是不同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    相关资源
    最近更新 更多