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

问题描述 投票:4回答:2

我以编程方式将子视图添加到我的视图中,当我将所有可访问性参数附加到该视图时:

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

但是当我这样查询UI时:

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

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

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

ios xcode7 xcode-ui-testing ui-testing
2个回答
12
投票

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

Accessibility Programming Guide中检查使自定义容器视图的内容可访问] >>

我有一个不同的解决方案,因为我给自己带来了一个以相同方式表现出来的不同问题,即XCUITests无法找到基本元素。我的应用使用UIWindow设置为UIWindow.windowLevel.normal + 2在其他窗口上方显示全屏加载微调器。事实证明,即使此窗口不在视图层次结构,可访问性层次结构或响应者链之内,仅由于其存在,它也会破坏UI测试使用的可访问性/视图层次结构爬网系统。

[为了验证这一点,我从应用程序中完全删除了额外的UIWindow实例。该修复程序变得更简单,仅使用windowLevel = .alert而不是将常数添加到UIKit的常数中。


0
投票

我有一个不同的解决方案,因为我给自己带来了一个以相同方式表现出来的不同问题,即XCUITests无法找到基本元素。我的应用使用UIWindow设置为UIWindow.windowLevel.normal + 2在其他窗口上方显示全屏加载微调器。事实证明,即使此窗口不在视图层次结构,可访问性层次结构或响应者链之内,仅由于其存在,它也会破坏UI测试使用的可访问性/视图层次结构爬网系统。

© www.soinside.com 2019 - 2024. All rights reserved.