7

我正在通过 Appium 使用本机 iOS 应用程序。

我有以下结构:

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

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

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

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

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

2 回答 2

7

您快到了。当你想要的是第一个 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 查询放入代码之前对其进行测试。

于 2015-12-14T23:06:48.943 回答
1

您还可以在 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);
于 2016-08-10T00:47:31.900 回答