即使元素存在于层次结构中,也会引发kGREYNoMatchingElementException

时间:2018-07-06 03:21:05

标签: earlgrey

代码

    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元素。 行动异常:{   “动作名称”:“点击”,   “ Element Matcher”:“(((((respondsToSelector(isAccessibilityElement)&& isAccessibilityElement)&& accessibilityLabel('お知らせ'))&&可交互)”,   “恢复建议”:“检查元素是否在下面打印的UI层次结构中存在。如果存在,则调整匹配器,使其与元素精确匹配。 }

异常详细信息:错误跟踪:[   {     “ Description”:“由于找不到所需的元素,交互无法继续。”,     “错误域”:“ com.google.earlgrey.ElementInteractionErrorDomain”,     “错误代码”:“ 0”,     “文件名”:“ GREYElementInteraction.m”,     “ Function Name”:“-[[GREYElementInteractionmatchedElementsWithTimeout:error:]”,     “ Line”:“ 124”,     “ TestCase类”:“ MyAppTests.Myunittest”,     “ TestCase方法”:“ testExample”   } ]

查看层次结构

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

失败时的屏幕截图

enter image description here

关注点

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

1 个答案:

答案 0 :(得分:0)

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

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

  • 如果异常为“ NoMatchingElementException”,恢复建议为何会显示“检查元素是否在下面打印的UI层次结构中存在。如果存在,则调整匹配器以使其与元素精确匹配”

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

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

您可能只想检查xcode中用于测试目标的测试主机。

  • 对于FAQ中的初始屏幕建议,快速实施解决方案似乎难以实施(应用程序模块应导入测试模块和rootViewController类中

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

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

对于UI测试是否可以正常工作?测试主机设置正确吗?

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

EG 1是基于XCTest单元测试的工具,不能使用UI测试。我们正在努力发布的EG 2,使您可​​以使用XCUITest命令。

  • 截屏失败(黑屏)与“视图层次结构”矛盾。

我对此不确定,这似乎是应用程序方面的问题。您应该对我们的闲适状态进行ping操作,然后在此处详细说明。