Xcode UI 测试找不到以编程方式添加的视图

Xcode UI Tests can't find views that are added programmatically

我正在以编程方式向我的视图添加一个子视图,当我这样做时,我将所有可访问性参数附加到它:

  [labelView setAccessibilityLabel:@"label"];
  [labelView setIsAccessibilityElement:YES];
  [labelView setUserInteractionEnabled:YES];

但是当我这样查询 UI 时:

 let app = XCUIApplication()
 app.staticTexts["label"]

测试失败,因为找不到视图。

我该如何处理,如何使动态添加的视图可用于 UI 测试?

您需要确保标签视图 (UIEditText?) 的容器视图未将 isAccessibilityElement 设置为 YES。如果这样做,它将隐藏其子视图(您的标签)的可访问性。

Accessibility Programming Guide

中选中使自定义容器视图的内容可访问

我有一个不同的解决方案,因为我给自己带来了一个以相同方式表现的不同问题,即 XCUI测试找不到基本元素。我的应用程序使用 UIWindow 并将 UIWindow.windowLevel 设置为 .normal + 2 以在另一个 windows 之上显示全屏加载微调器。事实证明,即使这个 window 不在视图层次结构、可访问性层次结构或响应者链中,仅仅因为它的存在,它就破坏了 UI 测试的 accessibility/view-hierarchy 爬行系统使用。

为了验证这一点,我从应用程序中完全删除了额外的 UIWindow 个实例。修复最终变得更简单,只使用 windowLevel = .alert 而不是向 UIKit 的常量添加常量。