Swift UITest - 将使用两者之一。哪个是未定义的

Posted

技术标签:

【中文标题】Swift UITest - 将使用两者之一。哪个是未定义的【英文标题】:Swift UITest - One of the two will be used. Which one is undefined 【发布时间】:2018-11-22 06:36:43 【问题描述】:

我正在尝试制作一些 UITest,但遇到了烦人的问题。

当我尝试获取 tableView/tableCell 时,我在日志中收到此文本并且我的测试失败。

objc[18223]:VCWeakObjectHolder 类在 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/ios.simruntime/Contents/Resources/RuntimeRoot 中实现/System/Library/PrivateFrameworks/AVConference.framework/Frameworks/ViceroyTrace.framework/ViceroyTrace (0x131ad04d0) 和 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS .simruntime/Contents/Resources/RuntimeRoot/System/Library/PrivateFrameworks/AVConference.framework/AVConference (0x131797e38)。将使用两者之一。哪一个是未定义的。

这是我用来做测试的代码:

let app = XCUIApplication()
let table = app.tables

let cell = table.cells.element(matching: .cell, identifier: "cell_settings_1")
_ = cell.waitForExistence(timeout: 10.0)
cell.tap()

XCTAssert(app.otherElements["view_about"].exists)

我的 tableViewCell 有这个字符串作为标识符,这不是问题。

当我尝试记录测试时,我收到此错误:

有人可以帮助我吗?

【问题讨论】:

您是在编译时收到警告,还是在实际执行测试时在运行时收到警告?直觉告诉我,这看起来像是一个编译时警告,因此与您的 UI 测试无关。 this question 是否解决了您遇到的相同问题? @paulvs 是同样的警告,但我的应用程序没有崩溃。似乎测试无法识别表格。甚至当我记录测试创建时。我编辑了我的问题。 【参考方案1】:

经过这么长时间我发现了我的错误。

问题是我在视图的父级中放置了一个可访问性标识符.. 然后,里面的 itens 将永远无法正常工作。

这是一张图片:

因此,在图像情况下,测试(甚至记录器)不会检测到“view_about”内的任何内容。

【讨论】:

【参考方案2】:

当在可访问性层中找不到元素时,您通常会收到此错误。重要的是,这与 UI 测试无关。

暂时忽略测试,并从 XCode 的开发人员工具中打开 Accessibility Inspector。如果您使用小目标图标,并将鼠标悬停在您要与之交互的对象上,则很有可能无法将其作为可访问性元素找到。如果是这种情况,您将需要修复应用程序中元素的可访问性。有时这很容易,有时则不然。视具体情况而定。

您可能会看到此错误的其他原因,但我遇到的所有时间都是由上述问题引起的。

【讨论】:

以上是关于Swift UITest - 将使用两者之一。哪个是未定义的的主要内容,如果未能解决你的问题,请参考以下文章

两者都实现了类,将使用两者之一。哪个是未定义的

JavaLaunchHelper 类在... libinstrument.dylib 中都实现了。将使用两者之一。哪个是未定义的

Uitest 刷新控制 swift

用于分离 UITest 代码的 Swift 条件语句

如何在 Swift 中 UITest 更改 UIButton 的图像?

UITest 项目中的协议一致性错误