【问题标题】:Tap UITabBarItem with EarlGrey用 EarlGrey 点击 UITabBarItem
【发布时间】: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> 键下显示我的属性,而在其他任何地方都没有。

标签: ios swift earlgrey


【解决方案1】:

正如here 的回答,您可以使用此匹配器来查找标签栏元素。

匹配器示例

EarlGrey.selectElement(with: grey_text(tabbarTitle))
    .inRoot(grey_kindOfClass(UITabBar.self))
    .perform(grey_tap())

【讨论】:

  • 这种方法在 iOS 13 上停止工作了,有什么想法吗?
猜你喜欢
  • 2018-01-01
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多