我正在使用KIF Framework进行功能性UI测试。假设我在当前的iPad屏幕上,其中许多视图(标签,按钮,文本字段等)都分配了唯一的可访问性标签。如果我有accessibilityLabel
字符串方便,我可以使用它从当前屏幕获得对相关UIView
的引用吗?
例如,[[UIView alloc] viewWithTag:5]
会返回UIVIew
提供的tag
。我正在寻找类似[[UIView alloc] viewWithAccessiblityLabel:@"my label"]
的内容。
P.S:我知道蛮力方法是以递归方式迭代self.subviews中的所有视图,并比较可访问性标签以找到我要搜索的内容。我正在寻找更好的方法。
答案 0 :(得分:11)
实际上有一种非常简单的方法来实现您在使用KIF进行UI自动化时所描述的内容,尽管KIF并未明确表明这是可行的。 waitForViewWithAccessibilityLabel
会在找到视图时返回对该视图的引用:
夫特
let view = tester().waitForView(WithAccessibilityLabel: "My label")
目标C
UIView *view = [tester waitForViewWithAccessibilityLabel:@"My label"];
一旦被发现,非常有用。
答案 1 :(得分:9)
我正在使用KIF进行UI自动化!以下是从给定的accessibilityLabel获取视图的步骤。方法viewContainingAccessibilityElement:element
是UIAccessibilityElement类的扩展方法。
UIAccessibilityElement *element = [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:label];
UIView *view = (UIView*)[UIAccessibilityElement viewContainingAccessibilityElement:element];
答案 2 :(得分:2)
对我来说(从您的评论中说:“我需要在自动化UI测试中使用此功能”),就像您正在寻找accessibilityIdentifier
一样。来自文档:
UIAccessibilityIdentification
协议用于将唯一标识符与用户界面中的元素相关联。您可以使用在UI Automation脚本中定义的标识符,因为accessibilityIdentifier
的值对应name
UIAElement
方法的返回值。