【问题标题】:Dexguard release apk not showing resource ids for elements in UI automatorDexguard 发布 apk 未显示 UI automator 中元素的资源 ID
【发布时间】:2018-01-11 02:55:31
【问题描述】:

使用 dexguard 混淆 apk 后,元素资源 ID 在 uiautomator 工具中不可见。

dexguard 发布版本可以用于自动化吗? 如何为 dexguard 发布版本保留元素资源 ID?

【问题讨论】:

    标签: android automation appium android-uiautomator dexguard


    【解决方案1】:

    -keepresources id/** 成功了。

    【讨论】:

    • @dheeraj 在您的应用项目的 dexguard/proguard 规则文件中
    【解决方案2】:

    是的。我已经自动化了许多应用程序,这些应用程序几乎没有资源 ID。即使是那些确实使用资源 ID 的人也要记住,与 HTML 不同,它们并不总是唯一的 - 无论如何,许多元素都可以包含相同的资源 ID。

    如果我获得了资源 ID,并且我仔细检查了页面元素并发现该 ID 是唯一的,我会经常使用它。在我看来,使用 XPaths 可以更一致地找到元素,这允许更详细的定位器。

    通常情况下,我会做类似的事情

    "//android.widget.TextView[@text='whatever']
    

    或进一步:

    "//android.widget.TextView[@text='whatever' and @index=1]"
    

    【讨论】:

    • 但我的疑问是我们有一个被 dexguard 混淆的原生 android 应用程序。混淆后 uiautomator 无法看到资源 ID。我们将资源 ID 配置保留在 dexguard 配置文件中,但资源 ID 仍然不可见。您是否对混淆的原生发行版 apk 进行了自动化处理?
    • @Eric Lafortune 有什么建议吗?
    • 我对混淆器并不直接熟悉。它是否比资源 ID 隐藏更多?我的回答的重点是,您不一定必须拥有资源 ID 才能形成可用的定位器。还是您正在做其他需要资源 ID 的事情?
    • 是的,我们需要自动化的资源 ID,它是本机应用程序。dexguard 还隐藏了自动化所需的所有资源 ID。
    • 我们正在使用资源 ID 与元素进行交互。您是否将 xpath 称为解决方法?如果我们必须使用资源 ID,您能否提供解决方案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多