【发布时间】:2018-11-18 17:05:12
【问题描述】:
我在尝试使用 Earl Grey 编写 UI 测试时遇到了问题,特别是如何在某个 UITabBarItem 上执行点击。
我注意到标签栏项目不允许在情节提要中设置可访问性 ID 和标签,我尝试在运行时使用 barItem.accessibilityLabel = "label" 设置可访问性标签,但在引用项目时使用EarlGrey.select(elementWithMatcher: grey_accessibilityLabel("label")).perform(grey_tap())
有没有办法做到这一点?
【问题讨论】:
-
你能在
[GREYElementHierarchy hierarchyStringForAllUIWindows]打印的层次结构中找到 UITabBarItem 吗?你能在那里找到任何属性吗? -
@gran_profaci 是的,我可以在层次结构中找到它们,我看到我设置的标签列在
AX=<attribute>旁边。从文档中我可以看到,在这种情况下,必须通过其他方式找到该元素。我可以使用grey_kindOfClass匹配器,但由于我有多个没有标签的选项卡,如何选择该类的特定项目? -
元素本身是否没有可访问性属性?您可能应该添加这些。我建议使用
atIndex从匹配元素列表中查找元素。但是,我们不保证每次的顺序都是一样的。 -
@gran_profaci 抱歉,我对 iOS 开发比较陌生,所以我试图解决所有这些问题。我在我的
UITabBarController中在运行时将可访问性属性添加到UITabBarItems。我遍历调用tabBar.items!时得到的项目,并在每个项目上调用barItem.accessibilityLabel = "label"、barItem.accessibilityIdentifier = "label"和barItem.isAccessibilityElement = true。控制台中打印的视图层次结构仅在AX=<attribute>键下显示我的属性,而在其他任何地方都没有。