【问题标题】:How to get list of child elements of an element in Appium?如何获取Appium中元素的子元素列表?
【发布时间】:2016-03-19 06:20:17
【问题描述】:

我正在通过 Appium 使用原生 iOS 应用程序。

我有以下结构:

UIAApplication ->
                  UIAWindow ->
                              UIATextBox
                              UIALabel
                  UIAWindow ->
                              SomethingElse

我找到了获取第一个 UIAWindow 的方法,我想获取该窗口中所有元素的列表。我该怎么做?

我想从第一个 UIAWindow 中获取 UIATextBox 和 UIALabel,但不是 SomethingElse 元素。

我一般如何做子元素列表?

  @Test
  public void testListWindows() {
      List<MobileElement> windows = driver.findElementsByClassName("UIAWindow");
      List<MobileElement> elements = windows.get(0).?????
  }

【问题讨论】:

  • 请分享更多细节。当您需要窗口中所有元素的列表时,是否需要使用任何特定标签进行收集?
  • 无论元素的类型如何,我都需要特定元素(例如 UIAWindow)的所有类型的所有子元素。
  • 好的,您能否将Appium 提取的XML 分享到您要作为列表 收集的同一页面上。在导航到特定页面并共享 Appium 的 XML 时,在代码中添加断点。
  • @AsitTripathy,Appium 是一个移动框架,而不是网页。
  • 我以为您正在使用带有 Native App 的 Appium。

标签: ios selenium selenium-webdriver appium appium-ios


【解决方案1】:

你快到了。当你想要的是第一个 UIAWindow 的所有元素的列表时,你所拥有的是给你一个所有 UIAWindows 的列表。我建议使用带有通配符的 Xpath。

这将为您获取第一个 UIAWindow 的直接子元素的每个元素:

List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]/*");

这将为您提供第一个 UIAWindow 的每个子子项和子子项等:

List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]//*");

额外提示:如果您正在为 iOS 自动化,我认为这意味着您可以访问 OS X,您可以在其中安装 Appium dot 应用程序并使用检查器。检查器是一个很好的工具,可以在将 xpath 查询放入代码之前对其进行测试。

【讨论】:

  • 你是说 List elements = windows.get(0).findElements(MobileBy.xpath("./*"));永远不会工作?如果我在其他地方需要窗户怎么办?我最终会重复吗?
  • 非常感谢。为我处理这段代码))我对你有非常重要的问题,。如果我在 java 中使用 appium 测试它时没有应用程序的源代码。如果应用程序在某些时候崩溃,我可以处理吗?或者我需要源代码才能看到异常的名称?示例:我单击按钮它会引发 nullpointerexception 但我无法在 appium java 中处理它怎么办?
【解决方案2】:

您还可以在 Appium 中按类别查找 iOS 应用的文本字段和标签。 findElementsByClassName 方法将返回当前屏幕上与该类匹配的所有元素。

List<MobileElement> textFields = driver.findElementsByClassName("UIATextField");
MobileElement textField = textFields.get(0);

List<MobileElement> labels = driver.findElementsByClassName("UIAStaticText");
MobileElement label = labels.get(0);

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2016-05-11
    • 2019-11-18
    • 2018-04-21
    • 2020-04-02
    • 2013-06-13
    • 2020-10-30
    • 1970-01-01
    • 2014-10-08
    相关资源
    最近更新 更多