如何获取 Appium 中元素的子元素列表?
How to get list of child elements of an element in Appium?
我正在通过 Appium 使用本机 iOS 应用程序。
我有以下结构:
UIAApplication ->
UIAWindow ->
UIATextBox
UIALabel
UIAWindow ->
SomethingElse
我找到了获取第一个 UIAWindow 的方法,我想获取其中所有元素的列表 window。我该怎么做?
我想从第一个 UIAWindow 而不是 SomethingElse 元素获取 UIATextBox 和 UIAlabel。
一般情况下如何列出子元素?
@Test
public void testListWindows() {
List<MobileElement> windows = driver.findElementsByClassName("UIAWindow");
List<MobileElement> elements = windows.get(0).?????
}
你快到了。当您想要的是第一个 UIAWindow 的所有元素的列表时,您所拥有的是为您提供所有 UIAWindows 的列表。我建议使用带通配符的 Xpath。
这将为您提供第一个 UIAWindow 的直接 child 的每个元素:
List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]/*");
这会让你得到第一个 UIAWindow 的每个 child 和 sub-child 和 sub-sub-child 等:
List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]//*");
额外提示:如果您正在为 iOS 实现自动化,我认为这意味着您可以访问 OS X,您可以在其中安装 Appium dot 应用程序并使用检查器。检查器是一个很好的工具,可以在将 xpath 查询放入代码之前对其进行测试。
您还可以在 Appium 中通过 class 为 iOS 应用程序找到文本字段和标签。 findElementsByClassName 方法将 return 当前屏幕上匹配 class.
的所有元素
List<MobileElement> textFields = driver.findElementsByClassName("UIATextField");
MobileElement textField = textFields.get(0);
List<MobileElement> labels = driver.findElementsByClassName("UIAStaticText");
MobileElement label = labels.get(0);
我正在通过 Appium 使用本机 iOS 应用程序。
我有以下结构:
UIAApplication ->
UIAWindow ->
UIATextBox
UIALabel
UIAWindow ->
SomethingElse
我找到了获取第一个 UIAWindow 的方法,我想获取其中所有元素的列表 window。我该怎么做?
我想从第一个 UIAWindow 而不是 SomethingElse 元素获取 UIATextBox 和 UIAlabel。
一般情况下如何列出子元素?
@Test
public void testListWindows() {
List<MobileElement> windows = driver.findElementsByClassName("UIAWindow");
List<MobileElement> elements = windows.get(0).?????
}
你快到了。当您想要的是第一个 UIAWindow 的所有元素的列表时,您所拥有的是为您提供所有 UIAWindows 的列表。我建议使用带通配符的 Xpath。
这将为您提供第一个 UIAWindow 的直接 child 的每个元素:
List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]/*");
这会让你得到第一个 UIAWindow 的每个 child 和 sub-child 和 sub-sub-child 等:
List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]//*");
额外提示:如果您正在为 iOS 实现自动化,我认为这意味着您可以访问 OS X,您可以在其中安装 Appium dot 应用程序并使用检查器。检查器是一个很好的工具,可以在将 xpath 查询放入代码之前对其进行测试。
您还可以在 Appium 中通过 class 为 iOS 应用程序找到文本字段和标签。 findElementsByClassName 方法将 return 当前屏幕上匹配 class.
的所有元素List<MobileElement> textFields = driver.findElementsByClassName("UIATextField");
MobileElement textField = textFields.get(0);
List<MobileElement> labels = driver.findElementsByClassName("UIAStaticText");
MobileElement label = labels.get(0);