6

我对 iOS UIAutomation 很陌生,这是我面临的问题

我有一个如下视图层次结构,并希望访问自动化脚本中的 CustomView2 元素

UIWindow > UIScrollView > CustomView1(多个)> CustomView2(多个)

滚动视图具有 CustomView1 类型的子视图,而 CustomView1 又具有 CustomView2 类型的子视图。

我已将可访问性信息分配给层次结构中的所有视图,但我无法访问自动化脚本中的 CustomView2 元素。

当我在 UIScrollView 上执行 logElementTree() 时,我得到的只是 CustomView2 的实例,CustomView2 甚至不在 UIWindow 的树结构中。

请建议是否有任何遗漏或出现问题。

这是我正在使用的代码

var mainWindow = application.mainWindow();
var scrollView = mainWindow.scrollViews()[0];
var custom1 = scrollView.elements().withName("CustomView1");

for(var index=0; index<custom1.length; index++){
    currentIndustry.tap();
    custom1[index].logElementTree();
    var custom2 = custom1[index].elements().withName("CustomView2");
    UIALogger.logPass("Custom2 Length : " + custom2.length);
}

custom1[index].logElementTree() 打印的树;不包含 CustomView2 的实例

PS 我需要同时访问 CustomView1 和 CustomView2 元素

4

1 回答 1

5

如果您还没有找到答案,这可能会对您有所帮助:

UIAutomation 嵌套的可访问性元素从层次结构中消失

在您的 CustomView1 类中实现以下内容:

- (BOOL)isAccessibilityElement
{
    return NO;
}

这将使您的 CustomView2 元素在您 logElementTree() 时可见。

如果 CustomView2 包含可访问的元素并且基本上也是一个容器视图,那么在该类中也实现上述内容,它的子视图将变得可访问。

于 2012-01-18T17:53:24.683 回答