UIAutomation 无法访问元素

Posted

技术标签:

【中文标题】UIAutomation 无法访问元素【英文标题】:UIAutomation cannot access element 【发布时间】:2015-03-09 15:46:52 【问题描述】:

我有一个 UIAutomation 脚本,我需要在其中选择自定义视图内的 UISegmentedControl 按钮。这个自定义视图是UITableView的标题视图

我尝试了这两个调用,但它们都不起作用

target.frontMostApp().mainWindow().segmentedControls()[0].buttons()["Stats"].tap();
target.frontMostApp().mainWindow().segmentedControls()["mySegmentedControl"].buttons()["Stats"].tap();

我收到错误“无法对无效元素执行操作”,这意味着找不到 UISegmentedControl

我做错了什么?

【问题讨论】:

【参考方案1】:

我之前遇到过类似的问题。您是否在自定义视图中将“isAccessibilityElement”设置为 true?如果你这样做,那可能是你的问题,如果它设置为 true,它会“隐藏”该视图的子视图的可访问性,这意味着你将无法访问你的按钮。

【讨论】:

不,我没有以编程方式设置任何内容,也没有在主自定义视图的“用户定义的运行时属性”中设置任何内容。我只是在xib上的分段控件上设置了accessibilityIdentifier 我也尝试在我的容器视图中将isAccessibilityElement 覆盖为NO,但它不起作用【参考方案2】:

所以解决方案是在自定义视图和包含的UISegmentedControl 上设置accessibilityIdentifier,然后使用

target.frontMostApp().mainWindow().tableViews()[0].groups()["MyCustomView"].segmentedControls()["MySegmentedControl"].buttons()["Stats"].tap();

【讨论】:

以上是关于UIAutomation 无法访问元素的主要内容,如果未能解决你的问题,请参考以下文章

UIAutomation GetTopLevelWindowByName

在 UIAutomation 的自定义表格部分标题视图上设置 accessibilityIdentifier

Java错误排查无法将类中的构造器应用到给定类型 无法将类 uiauto.web.common.OperationNewLabelPageImpl中的构造器 OperationNewLabe

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

为啥 UIAutomation 看不到我视图中的按钮?

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