2013-03-18 45 views
2

我目前正在自动化我的iOS应用程序。我目前面临的问题是将我的子视图分组以便将它们与其他视图分开。好吧,要清楚,这里是我有:如何将子视图分组以实现自动化?

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

  • 自定义视图容器 - MyContainerView2

  • -MyUIImageView
  • -MyUITextField
  • -MyUIButton

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

好的,但是当我登录的元素树,子视图不进行分组(因为MyContainerView的辅助功能是禁用的,所以我不能拿到小组第一:

  • -MyUIImageView
  • -MyUITextField
  • -MyUIButton

,并用它作为一个整体对象(得到它的ImageView的,它的文本框,检查其属性等)工作。

相反,我得到这样的:

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

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

所以,我的问题是如何将它们分组以实现自动化?

+0

把它们放在一个'NSArray'中? – 2013-03-18 09:07:47

+0

这就是我所做的 - 这是一个非常容易出错的建议。原因 - 如果只有一个视图出现无处(稍后添加,或者无论如何),你都会被搞砸。我正在寻找更好的建议:) – Martin 2013-03-18 09:10:07

+0

顺便说一句,我想你的意思是阵列(),因为我在谈论UIAutomation和Javascript。要么? – Martin 2013-03-18 09:12:47

回答

1

您没有正确设置容器视图的可访问性属性,因为这会弄乱它内部的元素。

为什么你需要分组?如果使用window.elements().withName('MyUIButton'),则会获得一个名为MyUiButton的所有元素的数组。所以window.elements().withName('MyUIButton')[0]将成为第一个观点,window.elements().withName('MyUIButton')[1]将成为第二个。

也许不如分组好,但这是真正的内部测试,而不是真正的代码。 如果您确实需要某种分组解决方案,则可以更改元素运行时的辅助功能属性,为视图的所有子元素添加前缀。像view1_MyUiButton和view2_MyUiButton。

+0

需要分组是因为MyUIButton和MyUIImageView是一个整体视图。我不希望它们分开,我也不想让MyUIButton [i]和MyUIImageView [i](因为明显的错误原因)。前缀是一个非常黑客的方式,我不喜欢它。也许我应该考虑它......无论如何,你是否知道其他支持这种功能的uiautomation框架? – Martin 2013-03-25 11:45:45

相关问题