UI 测试 Xcode 7- 无法访问子视图中的元素

UI Testing Xcode 7- can't access element within subview

我正在尝试访问子视图中的元素,但发现无法访问。

层次结构为:

视图控制器:

我想访问 zipCodeEntered 文本字段。我有一个名为 "zipCodeEntered" 的辅助功能标签。

当我尝试记录自动化时,它只注册了超级视图 "userEnterView" 而不是我可以点击的实际文本字段。

我打印 "app.otherElements[SUPER_VIEW_NAME].debugDescription" 以查看该层次结构中有哪些元素,它会打印 none。

关于为什么我无法访问这些内容的任何想法 elements/how 我可以访问它们吗?

子视图不可访问,因为父视图不是容器视图。来自辅助功能编程指南的 Making Your iOS App Accessible 部分:

From the perspective of accessibility, a custom view is either an individual view or a container view. An individual view does not contain any other views that need to be accessible.

A container view, on the other hand, contains other elements with which users can interact.

为了使子视图可访问,父视图应该通过从 -isAccessibilityElement 返回 NO 并实现 UIAccessibilityContainer 协议的方法来告诉 UIAccessibility 它是一个可访问容器。

我在 UITableView 中也遇到了这个问题。我的单元格有一个 containerView(UIView),它有子视图(TextView, UIButton...) 和一个带有单元格的 collectionView。

我尝试了接受的答案,但没有用。(UI 记录器或手动代码无法识别我的子元素)。但有时我发现 UITest 在我触发刷新 table.

时突然识别出我的子元素

所以现在我知道如果 UITest 找不到我的子视图,我调用 tableView.reloadData 来刷新视图,然后所有问题都消失了。

无论如何,这只是一种解决方法,希望苹果能尽快修复。

为我修复它的是选中 √ "Accessibility" 框以在 Interface Builder 中启用。

如果不在 IB 中工作,请尝试将视图的 isAccessibilityElement 属性 设置为 true。

希望对您有所帮助!