【问题标题】:Unable to find element using xpath with Appium (robot framework)无法使用带有 Appium 的 xpath 找到元素(机器人框架)
【发布时间】:2014-09-29 14:51:57
【问题描述】:

我无法使用 xpath 识别元素。我尝试了不同类型的 xpath,但无法识别它。

我想识别下图中显示的元素“Bills”。 我没有 ID,所以我使用的是 xpath。我在xpaths下面使用。

xpath=//android.app.ActionBar$Tab/TextView[@text='Bills'] 和 xpath=//android.app.ActionBar$Tab1/TextView[@text='Bills']

请帮助我。我被打动了。

【问题讨论】:

  • 经过进一步探索,我才知道这是因为其中一个节点使用了 $(特殊字符)。有人知道如何处理这种情况。注意:我尝试过使用回馈斜线。但它对我不起作用。
  • 您是否尝试过使用 `\` 而不是单个反斜杠来转义字符?
  • 为了记录我有“\\”但我没有检查..澄清一下:您是否尝试过使用双反斜杠而不是单反斜杠来转义字符?

标签: android xpath robotframework appium


【解决方案1】:

您应该为您的 xpath 使用每个选择器的“类”:

xpath=//android.widget.TextView[@text='Bills']

如果这不起作用,则意味着您应该在此之前添加一些先前的类(在更高层次结构中),以使此 xpath 是唯一的。

【讨论】:

    【解决方案2】:

    由于您似乎没有任何其他具有相同属性的元素,如果您从 xpath 中删除有问题的部分并尝试仅使用以下内容,它可能会起作用:

    xpath=//TextView[@text='Bills']
    

    【讨论】:

      【解决方案3】:

      使用这个:

      xpath=(//android.widget.TextView[@text='Bills'])[1]

      很明显,UI Automator Viewer 中有此元素的索引

      注意:组索引从 1 开始。

      【讨论】:

        【解决方案4】:

        xpath 上面的某些时候不起作用.. 它可以从它们的父元素开始,如下所示,例如:

        Xpath=//android.widget.linerlayout[1]/android.widget.linerlayout[1]/android.widget.TextView[@text='Bills']
        

        【讨论】:

        • 从最佳编码实践的角度来看,这是一个糟糕的解决方案。我建议仅将此类实现作为最后的解决方案。
        猜你喜欢
        • 2016-04-26
        • 2018-08-16
        • 2020-12-16
        • 2018-12-04
        • 2021-11-22
        • 2019-02-18
        • 2015-11-11
        • 2019-05-06
        • 2020-03-14
        相关资源
        最近更新 更多