我正在使用XCode GM中的iOS 9.0进行UI级别测试。
问题:在XCode GM中,是否有一种命令可以让你查看可访问元素及其关系的“树形”结构?类似于Appium中的“页面”命令?
理想情况下,我希望能够在调试器中运行一个命令,以获取可供选择/操作的元素列表。目前,您可以在单个XCUIElement上使用debugDescription,但那只会给出该元素的信息。
我正在使用XCode GM中的iOS 9.0进行UI级别测试。
问题:在XCode GM中,是否有一种命令可以让你查看可访问元素及其关系的“树形”结构?类似于Appium中的“页面”命令?
理想情况下,我希望能够在调试器中运行一个命令,以获取可供选择/操作的元素列表。目前,您可以在单个XCUIElement上使用debugDescription,但那只会给出该元素的信息。
在您希望查看树结构的位置设置断点... 在调试器中输入:
po print(XCUIApplication().debugDescription)
这将打印出XCUITesting可以访问的所有内容。您也可以将其直接添加到您的测试中:
func testTreeExample() {
XCUIApplication().buttons["login"].tap()
print(XCUIApplication().debugDescription)
XCUIApplication().buttons["next"].tap()
print(XCUIApplication().debugDescription)
}
那么如果您在查找某些内容时遇到困难,您可以让应用程序在您完成某项操作后自动打印出其所见到的内容。
po XCUIApplication()
可以将层次结构以漂亮的树形格式打印出来。 - kakubei这并不完全符合您的要求,但是Xcode的辅助功能检查器使得从易于访问的标识符角度来查看视图层次结构变得更加容易。需要注意的是,在IB的可访问性面板中,“Label”并不重要,而是“Identifier”字段。
在Xcode 7.2中,打开Xcode->打开开发人员工具->辅助功能检查器。(您可能需要在系统偏好设置中给应用程序授权运行。)然后从Xcode启动您的iOS应用程序,并悬停在模拟器中的任何UI元素上。您将看到有关元素类型、描述、层次结构等的详细信息。
每当记录UI操作时,如果输出结果不正确,请使用该工具确定需要添加、更改或删除的辅助功能描述(我花了几天时间尝试通过UI测试线束来更改一个嵌套的UISegmentedControl,一旦我知道如何使用辅助功能检查器工具,问题就显而易见了)。
感谢shinobicontrols.com团队提供的好建议!
po XCUIApplication()
,这将以易于阅读的树形格式打印出整个应用程序的可访问性层次结构。Appium实现这个功能的方式是使用Facebook WebdriverAgent。 据我所知,他们的做法基本上是从根应用程序元素开始收集每个子元素的信息,然后进行递归。
http://fbidb.io 怎么样?
使用 idb ui describe-all
命令,您可以获得屏幕上所有元素的可访问性信息(而不是整个应用程序)https://fbidb.io/docs/commands#accessibility-info