如何获取Appium中元素的子元素列表?
Posted
技术标签:
【中文标题】如何获取Appium中元素的子元素列表?【英文标题】:How to get list of child elements of an element in 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 分享到您要作为列表你快到了。当你想要的是第一个 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您还可以在 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);
【讨论】:
以上是关于如何获取Appium中元素的子元素列表?的主要内容,如果未能解决你的问题,请参考以下文章
Appium 自动化测试:如何从 android [android.view.View] 中的自定义 UI 中获取元素或文本