小编ann*_*101的帖子

XCTest 无法访问屏幕上的错误消息标签

背景资料:

\n

我需要为简单的应用程序屏幕编写一些 UI 测试,该屏幕顶部有一个导航栏,屏幕其余部分有一个包含两个单元格的表格。

\n

每个单元格包含:

\n
    \n
  • 标签(“会员卡号”)
  • \n
  • 用于输入的安全文本字段
  • \n
  • 安全字段下的标签(“您必须在此处放置\n10 位会员卡号”)
  • \n
  • 仅当用户输入的位数少于或多于所需位数时,才会在输入字段下显示可选的错误文本
  • \n
\n

这是一张图像,可让您了解屏幕上的元素\n图像

\n

目标:

\n

编写一个测试执行以下操作:

\n
    \n
  • 点击卡片输入字段
  • \n
  • 输入无效的卡号(假设是 12 位数字而不是 10 位)
  • \n
  • 检查该字段下是否出现错误消息
  • \n
\n

问题:

\n

XCTest 无法识别包含错误的元素。

\n

当我使用调试视图层次结构检查元素时,它就在那里,清晰可见,文本属性“不能少于或超过 10 位数字”,accessibiltyIndentifier“errorField”。

\n

层次结构: UIWindow->UILayoutContainerView->UINavigationTransitionView->UIViewControllerWrapperView->UIView->Form->FormTextFieldCell->UITableViewCellContentView->UIView->UILabel

\n

它有一个同级,也是 UILabel(“这是您必须放置 10 位会员卡的地方”) - 访问这个同级没有问题。我可以通过accessibilityIdentifier或其文本访问它:

\n
app.staticTexts["hintField"]\napp.staticTexts["This is where you must put your 10-digit loyalty card"]\n
Run Code Online (Sandbox Code Playgroud)\n

但这些选项都不适用于我感兴趣的元素。当我打印 app.debugDescription 时,该元素不存在,就好像它不存在一样。

\n

以下是用户输入错误并且错误文本已在屏幕上可见后 debugDescription 的输出:

\n
Element subtree:\n \xe2\x86\x92Application 0x60000016e700: {{0.0, …
Run Code Online (Sandbox Code Playgroud)

ios xctest xcode-ui-testing xcode8

0
推荐指数
1
解决办法
2888
查看次数

标签 统计

ios ×1

xcode-ui-testing ×1

xcode8 ×1

xctest ×1