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