在Xcode 7 UI测试中访问嵌套的UIElements

ajc*_*432 4 ui-testing ios xcode7 xcode-ui-testing

我无法在我正在测试的应用程序的屏幕上找到XCUIElements.我意识到你可以通过以下方式访问按钮:

app.buttons[].elementBoundByIndex(0)
Run Code Online (Sandbox Code Playgroud)

但问题是有时候,找不到组件.就像我在UITableView中的单元格中有一个Button的情况一样.我尝试使用XCUIElementQuery来查找按钮,但它不在那里.我尝试查找表或tableviews或集合视图,即使它们在视图控制器中,它们也不会在UI测试中找到.返回数组的计数将为零.

我最初尝试记录测试,但单击我尝试访问的元素不起作用.Xcode将其检测为"其他元素",并且在尝试点击期间,播放应用程序不会前进.

是否有一种高级方法来访问UI层次结构中的UIView高级组件以进行级联?

Cha*_* A. 5

理想情况下,您应该accessibilityIdentifier在按钮上设置并通过它搜索它.本accessibilityIdentifier应为屏幕上的元素是独一无二的.您可以accessibilityIdentifier在Interface Builder中的Identity Inspector(command-option-3)或代码中直接设置.一旦你有一个,查询看起来像:

app.buttons["SomeAccessibilityIdentifier"]
Run Code Online (Sandbox Code Playgroud)

  • 理想情况下,它应该如何工作.我手动进入故事板并为元素添加了辅助功能标识符,但这不起作用.它无法通过"辅助功能标签"或"辅助功能标识符"找到该元素.XCUIElementQuery是否从树的头部一直传播到叶子? (2认同)
  • 嗯,不,它似乎没有捡起来。事实上,看起来它选择了视图,就像 Xcode 7 的录音机似乎做的一样(我已经尝试过录音)。不过,有相同问题的人和 Apple 的开发人员在 Apple 开发人员论坛上进行了公开讨论。也许它与特定视图的 UI 的结构方式有关。 (2认同)

ajc*_*432 5

我当时不知道这个,但我所寻找的基本上是debugDescription:

当您点击要尝试调试的区域时设置断点.然后

po print(app.debugDescription)

在调试控制台中.然后,您将看到层次结构.