从accessibilityLabel获取UIVIew以实现KIF自动化

app*_*eak 6 accessibility uiview ios kif-framework kif

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

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

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

Dun*_*age 11

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

迅速

 let view = tester().waitForView(WithAccessibilityLabel: "My label")
Run Code Online (Sandbox Code Playgroud)

Objective-C的

UIView *view = [tester waitForViewWithAccessibilityLabel:@"My label"];
Run Code Online (Sandbox Code Playgroud)

一旦被发现,非常有用.


app*_*eak 9

我正在使用KIF进行UI自动化!以下是从给定的accessibilityLabel获取视图的步骤.方法viewContainingAccessibilityElement:element是UIAccessibilityElement类的扩展方法.

UIAccessibilityElement *element = [[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:label];
UIView *view = (UIView*)[UIAccessibilityElement viewContainingAccessibilityElement:element];
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚添加了`keyWindow`这样的`[[[UIApplication sharedApplication] keyWindow] accessibilityElementWithLabel:label];`这对我有用.谢谢! (2认同)