如何将子视图分组以实现自动化?

时间:2013-03-18 09:05:20

标签: ios ios-ui-automation

我目前正在自动化我的iOS应用。我目前面临的问题是将我的子视图分组以便将它们与其他子视图分开。好的,要清楚,这就是我所拥有的:

  • 自定义视图容器 - MyContainerView1
  • -MyUIImageView
  • -MyUITextField
  • -MyUIButton

  • 自定义视图容器 - MyContainerView2

  • -MyUIImageView
  • -MyUITextField
  • -MyUIButton

好的,在自动化过程中,我希望能够访问所有子视图(包括MyUIImageView,MyUITextField,MyUIButton)。为此,我必须将它们全部设置为UIAccessibilityEnabled = YES,设置标签并设置所有MyContainerView实例的UIAccessibilityEnabled = NO。

好的,但是当我记录元素树时,子视图没有被分组(因为MyContainerView的可访问性被禁用,所以我无法获得该组:

  • -MyUIImageView
  • -MyUITextField
  • -MyUIButton

并将其作为整个对象使用(获取它的imageView,它是textField,检查它们的属性等)。

相反,我明白了:

  • -MyUIImageView
  • -MyUITextField
  • -MyUIButton
  • -MyUIImageView
  • -MyUITextField
  • -MyUIButton

这样我就不知道哪个MyUIImageView属于哪个MyContainerView,所以我不能将它们分组。

所以,我的问题是如何对它们进行分组以使其自动化?

1 个答案:

答案 0 :(得分:1)

您没有正确设置容器视图的辅助功能属性,因为这会弄乱其中的元素。

为什么需要分组?如果使用window.elements().withName('MyUIButton'),则会得到一个包含名为MyUiButton的所有元素的数组。因此window.elements().withName('MyUIButton')[0]将是第一个视图中的一个,window.elements().withName('MyUIButton')[1]将是第二个视图中的一个。

可能不如分组那么好,但这实际上是在测试中,而不是在真实代码中。 如果您确实需要一些分组解决方案,则可以更改元素运行时的可访问性属性,以便为视图的所有子元素添加前缀。像view1_MyUiButton和view2_MyUiButton。