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。如果这样做,它将隐藏其子视图(您的标签)的可访问性。
中选中使自定义容器视图的内容可访问
我有一个不同的解决方案,因为我给自己带来了一个以相同方式表现的不同问题,即 XCUI测试找不到基本元素。我的应用程序使用 UIWindow
并将 UIWindow.windowLevel
设置为 .normal + 2
以在另一个 windows 之上显示全屏加载微调器。事实证明,即使这个 window 不在视图层次结构、可访问性层次结构或响应者链中,仅仅因为它的存在,它就破坏了 UI 测试的 accessibility/view-hierarchy 爬行系统使用。
为了验证这一点,我从应用程序中完全删除了额外的 UIWindow
个实例。修复最终变得更简单,只使用 windowLevel = .alert
而不是向 UIKit 的常量添加常量。
我正在以编程方式向我的视图添加一个子视图,当我这样做时,我将所有可访问性参数附加到它:
[labelView setAccessibilityLabel:@"label"];
[labelView setIsAccessibilityElement:YES];
[labelView setUserInteractionEnabled:YES];
但是当我这样查询 UI 时:
let app = XCUIApplication()
app.staticTexts["label"]
测试失败,因为找不到视图。
我该如何处理,如何使动态添加的视图可用于 UI 测试?
您需要确保标签视图 (UIEditText?) 的容器视图未将 isAccessibilityElement
设置为 YES。如果这样做,它将隐藏其子视图(您的标签)的可访问性。
我有一个不同的解决方案,因为我给自己带来了一个以相同方式表现的不同问题,即 XCUI测试找不到基本元素。我的应用程序使用 UIWindow
并将 UIWindow.windowLevel
设置为 .normal + 2
以在另一个 windows 之上显示全屏加载微调器。事实证明,即使这个 window 不在视图层次结构、可访问性层次结构或响应者链中,仅仅因为它的存在,它就破坏了 UI 测试的 accessibility/view-hierarchy 爬行系统使用。
为了验证这一点,我从应用程序中完全删除了额外的 UIWindow
个实例。修复最终变得更简单,只使用 windowLevel = .alert
而不是向 UIKit 的常量添加常量。