【问题标题】:Appium. Usage of Xpath axes in locator. Find sibling/parent/child/etc elements in context of curtrent elementAppium。在定位器中使用 Xpath 轴。在当前元素的上下文中查找兄弟/父/子/等元素
【发布时间】:2019-05-30 06:32:47
【问题描述】:

是否可以在现有移动元素的上下文中找到兄弟/父/子/等移动元素。 例如我有基本元素: MobileElement mobileElement = driver.findElement(By.xpath("//any/xpath/locator"));

然后我需要找到下面的兄弟元素。 在 Selenium 中,我可以使用类似的代码: MobileElement nextMobileElement = mobileElement.findElement("following-sibling::nextelement['任何条件']"); 但是在 appium 中,我得到了 NoSuchElementException。

在 Appium 中使用 xpath 轴以上述方式定位元素的正确语法是什么?

【问题讨论】:

    标签: xpath appium-android


    【解决方案1】:

    通过以下方式找到的解决方案: 当appium无法通过名称选择元素时,即有一个元素,那么你可以查看它的“class”属性,它会包含一个相同的文本:class="android.小部件.ViewAnimator”。因此,您可以基于此属性构建您的 Xpath 复杂定位器。如果是 Xpath 轴,它将如下所示: //some/xpath/preceding-sibling::*[@class='android.widget.ViewAnimator']。

    【讨论】:

    • niceeeee。这就是答案!
    【解决方案2】:

    一般来说,如果你想使用 xpath 在父元素下查找元素,在 xpath 中添加 . 表示要在给定父元素下搜索子元素 xpath。因此,在您的情况下,您可以尝试以下操作:

    mobileElement.findElement(By.xpath(".(xpath of the child element)")
    

    例如 mobileElement.findElement(By.xpath(".//div[@class='xyz']")

    【讨论】:

    • 我知道这个功能,我尝试使用 .在我的 xpath 表达式中使用单双 / ,但在所有情况下我都得到“NoSuchElementException”。
    • 那么您能发布您的 dom xml 和您尝试使用的 xpath,以便我们更好地了解您的问题吗?
    【解决方案3】:

    Appium 像 WebDriver 一样支持 XPath。确保你的 XPath 是正确的,你可以在appium-desktop 中测试它。 Following-sibling 为我工作,没有任何问题。 当 Appium 无法处理 XPath 表达式时,您应该会得到相关的异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 2020-11-15
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多