iOS UIAutomation:访问在自动化脚本中添加到 UIScrollView 上的自定义子视图

Posted

技术标签:

【中文标题】iOS UIAutomation:访问在自动化脚本中添加到 UIScrollView 上的自定义子视图【英文标题】:iOS UIAutomation : Accessing custom subviews added on a UIScrollView in automation script 【发布时间】:2011-10-20 09:51:15 【问题描述】:

我对 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 的实例

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

【问题讨论】:

我也有类似的问题。试试我的问答:***.com/questions/6751566/… 感谢@JackyBoy 的参考。这确实部分解决了问题,我需要同时访问 CustomView1 和 CustomView2,通过删除 CustomView1 的可访问性显然我失去了对 CustomView1 的访问权限。 【参考方案1】:

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

UIAutomation Nested Accessibilty Elements Disappear from Hierarchy

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

- (BOOL)isAccessibilityElement

    return NO;

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

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

【讨论】:

以上是关于iOS UIAutomation:访问在自动化脚本中添加到 UIScrollView 上的自定义子视图的主要内容,如果未能解决你的问题,请参考以下文章

尝试在具有 IOS 8 和 Xcode 6 UIAutomation 的设备上运行脚本时出错

IOS中的UIAutomation错误

将 iOS UIAutomation 作为操作后构建脚本运行会作为 posix spawn 错误返回

如何使用UIAutomation进行iOS 自动化测试

iOS UIAutomation - 无法录制脚本

IOS-UIAutomation:脚本运行问题。(在 MAC 上关闭屏幕/睡眠系统)