0

代码

    let label_interactable_matcher = grey_allOf([grey_accessibilityLabel("お知らせ"), GREYMatchers.matcherForInteractable()])
    let action = GREYActions.actionForTap()
    EarlGrey.selectElement(with: label_interactable_matcher).atIndex(0).perform(action)

例外

异常名称:NoMatchingElementException 异常原因:找不到 UI 元素。动作例外:{“动作名称”:“Tap”,“元素匹配器”:“(((respondsToSelector(isAccessibilityElement)&& isAccessibilityElement)&&accessibilityLabel('お知らせ'))&&可交互)”,“恢复建议”:“检查如果元素存在于下面打印的 UI 层次结构中。如果存在,请调整匹配器,使其准确匹配元素。}

异常详细信息:错误跟踪:[ {“描述”:“交互无法继续,因为找不到所需的元素。”,“错误域”:“com.google.earlgrey.ElementInteractionErrorDomain”,“错误代码”:“0”, “文件名”:“GREYElementInteraction.m”,“函数名”:“-[GREYElementInteractionmatchedElementsWithTimeout:error:]”,“行”:“124”,“TestCase 类”:“MyAppTests.Myunittest”,“TestCase 方法” :“测试示例”}]

查看层次结构

ECKit_iOS.IconButton:0x7f86af9aea00; 轴=Y;AX.label='お知らせ'; AX.frame={{351, 81}, {55, 50}}; AX.activationPoint={378.5, 106}; AX.traits='UIAccessibilityTraitButton'; AX.focused='N'; 帧={{0, 0}, {55, 50}}; alpha=1> -UIButtonLabel:0x7f86aed75130; 轴=Y;AX.label='お知らせ'; AX.frame={{362, 115}, {33, 10}}; AX.activationPoint={378.5, 120}; AX.traits='UIAccessibilityTraitStaticText'; AX.focused='N'; 帧={{11, 34}, {33, 10}}; 阿尔法=1;UIE=N; text='お知らせ'>

失败截图

在此处输入图像描述

关注点

  1. 视图层次结构和打印异常之间存在矛盾
  2. 如果异常是“NoMatchingElementException”,为什么恢复建议会说“检查元素是否存在于下面打印的 UI 层次结构中。如果存在,请调整匹配器以使其准确匹配元素”
  3. 在安装后的现有应用程序中,如果我在 UNIT TESTING TARGET 中添加新的 XCTestCase,则应用程序以黑色背景显示(我期待它为白色)。
  4. 对于FAQ中的闪屏建议,swift实现方案似乎很难实现(app模块应该在testing模块&rootViewController类中导入
  5. 通过单元测试目标中的播放按钮运行应用程序与直接启动应用程序。出现意外的黑色背景而不是白色背景。在此处输入图像描述
  6. 如果我们同时选择 Xcode 的 UI 测试和 EarlGrey,我们不能在单元测试目标中使用来自 UI 测试目标的自动生成的代码和 UI 测试的管理变得困难
  7. 失败时的屏幕截图(黑屏)与视图层次结构相矛盾
4

1 回答 1

0
  • 视图层次结构和打印的异常之间存在矛盾。

您能否进一步解释一下矛盾是什么?

  • 如果异常是“NoMatchingElementException”,为什么恢复建议会说“检查元素是否存在于下面打印的 UI 层次结构中。如果存在,请调整匹配器以使其准确匹配元素”

很多时候,元素可以在层次结构中,但不能交互。例如。部分隐藏或不可访问的元素。

  • 在安装后的现有应用程序中,如果我在 UNIT TESTING TARGET 中添加新的 XCTestCase,则应用程序以黑色背景显示(我期待它为白色)。

您可能想检查测试目标在 xcode 中的测试主机是什么。

  • 对于FAQ中的闪屏建议,swift实现方案似乎很难实现(app模块应该在testing模块&rootViewController类中导入

对于 EG 1,这应该可以正常工作,因为应用程序和测试都在同一个过程中。

  • 在单元测试目标中添加并运行新的测试用例后,我们现有的应用程序以黑色背景显示。

它适用于 UI 测试吗?测试主机设置是否正确?

  • 如果我们同时选择 Xcode 的 UI 测试和 EarlGrey,我们不能在单元测试目标中使用来自 UI 测试目标的自动生成的代码,并且 UI 测试的管理变得困难

EG 1 是基于 XCTest 单元测试的工具,不能使用 UI 测试的东西。我们正在努力尽快发布的 EG 2 允许您使用 XCUITest 命令。

  • 失败时的屏幕截图(黑屏)与视图层次结构相矛盾。

我不确定这一点,这似乎是一个应用程序方面的问题。你应该在 slack 上联系我们,并在那里更详细地讨论这个问题。

于 2018-07-06T07:03:10.847 回答