6

我正在使用KIF 框架进行功能 UI 测试。假设我在当前的 iPad 屏幕上,其中许多视图(标签、按钮、文本字段等)都分配了唯一的可访问性标签。如果我有accessibilityLabel方便的字符串,我可以UIView使用它从当前屏幕获取对关联的引用吗?

例如,提供的[[UIView alloc] viewWithTag:5]返回。我正在寻找类似的东西。UIVIewtag[[UIView alloc] viewWithAccessiblityLabel:@"my label"]

PS:我知道蛮力方法是递归迭代 self.subviews 中的所有视图,并比较可访问性标签以查找我要搜索的内容。我正在寻找更好的方法。

4

3 回答 3

11

实际上,在使用 KIF 进行 UI 自动化时,有一种非常简单的方法可以实现您所描述的内容,尽管 KIF 并没有明确表明这是可能的。waitForViewWithAccessibilityLabel找到时返回对视图的引用:

迅速

 let view = tester().waitForView(WithAccessibilityLabel: "My label")

Objective-C

UIView *view = [tester waitForViewWithAccessibilityLabel:@"My label"];

非常有用,一经发现。

于 2014-10-08T17:50:46.060 回答
9

我正在使用KIF进行 UI 自动化!以下是从给定的可访问性标签中获取视图的步骤。MethodviewContainingAccessibilityElement:element是 UIAccessibilityElement 类的扩展方法。

UIAccessibilityElement *element = [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:label];
UIView *view = (UIView*)[UIAccessibilityElement viewContainingAccessibilityElement:element];
于 2013-05-16T08:58:09.037 回答
2

在我看来(来自您的评论:“我需要这个功能来自动化 UI 测试”)就像您正在寻找accessibilityIdentifier. 从文档中:

UIAccessibilityIdentification协议用于将唯一标识符与用户界面中的元素相关联。您可以使用您在 UI 自动化脚本中定义的标识符,因为 的值accessibilityIdentifier对应于 的name方法的返回值UIAElement

于 2013-05-11T15:23:22.440 回答