如何查看 XCUIElement 树?

问题描述 投票:0回答:6

背景

我正在 Xcode 中尝试 UI 测试。

问题

Xcode 中是否有一个命令可以让我查看可访问元素及其关系的“树”?类似于 Appium 中的“page”命令?

理想情况下,我想在调试器中运行一个命令,该命令为我提供可供选择/操作的元素列表。我知道我可以在单个 XCUIElement 上调用 debugDescription,但这只能提供该元素的信息。

ios xcode testing appium xcode-ui-testing
6个回答
42
投票

在您想要查看视图层次结构树的位置设置调试断点,然后在控制台中运行以下命令:

po print(XCUIApplication().debugDescription)

打印出 XCUITesting 有权访问的所有内容。您也可以将其放入测试中:

func testTreeExample() {
    XCUIApplication().buttons["login"].tap()
    print(XCUIApplication().debugDescription)
    XCUIApplication().buttons["next"].tap()
    print(XCUIApplication().debugDescription)
}

这样,如果您找不到某些内容,您可以让它在您执行某些操作后立即自动打印出应用程序看到的内容。


12
投票

这并不完全是您所要求的,但是 Xcode 的 Accessibility Inspector 使您可以更轻松地根据可通过标识符访问哪些元素来查看视图层次结构。 (注意:重要的不是 IB 辅助功能面板中的“标签”,而是“标识符”字段。):

在 Xcode 7.2 中,打开 Xcode->打开开发者工具->辅助功能检查器。 (您可能需要授予应用程序在系统偏好设置中运行的权限。)然后从 Xcode 启动您的 iOS 应用程序,并将鼠标悬停在模拟器中的任何 UI 元素上。您将看到有关元素类型、描述、层次结构等的全面信息。

每当您记录 UI 操作并且输出看起来不正确时,请使用该工具找出需要添加、更改或删除哪些辅助功能描述。 (我花了几天时间尝试通过 UI 测试工具来更改深度嵌入的 UISegmentedControl,一旦我弄清楚如何使用 Accessibility Inspector 工具,问题就变得明显了。)

感谢 shinobicontrols.com 的人们提供的宝贵建议!


3
投票

我建议在调试中运行时从菜单栏中选择:“调试”>“视图调试”>“捕获视图层次结构”。您不仅可以直观地表示视图,而且左侧调试导航器也可以显示层次结构。从 UI 测试的角度来看,这可能不是一对一的,但它可能非常有帮助。希望有帮助。


2
投票

在任何测试中放置断点,然后在控制台中输入

po XCUIApplication()
。这将以易于阅读的树格式打印出整个应用程序的辅助功能层次结构。


0
投票

Appium 执行此操作的方式是使用 Facebook WebdriverAgent。 据我所知,他们的做法本质上是从根应用程序元素开始,收集有关每个子元素的信息,然后递归。


0
投票

http://fbidb.io怎么样?

使用

idb ui describe-all
命令,您可以获得屏幕上所有元素(不是整个应用程序)的辅助功能信息https://fbidb.io/docs/commands#accessibility-info

© www.soinside.com 2019 - 2024. All rights reserved.