You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swift测试中检测View内Toolbar中的指定元素?

解决ViewInspector无法检测Toolbar中元素的问题

在使用ViewInspector测试SwiftUI视图时,Toolbar内的元素不在主视图树的直接遍历路径中,不能通过全局find(viewWithId:)直接定位。需要按照NavigationStack → Toolbar → ToolbarItem的层级逐步查找。

修改你的测试代码如下:

it ("Has an item in the toolbar") {
    // 先定位到NavigationStack
    let navigationStack = try view.navigationStack()
    // 获取对应的Toolbar
    let toolbar = try navigationStack.toolbar()
    // 通过位置找到目标ToolbarItem
    let toolbarItem = try toolbar.toolbarItem(placement: .bottomBar)
    // 在ToolbarItem内部查找目标Button
    expect(try toolbarItem.find(viewWithId: "button")).notTo(throwError())
}

关键说明:

  • 层级定位:Toolbar是附加在NavigationStack上的修饰器,必须先获取NavigationStack的Inspector实例,才能访问其内部的Toolbar。
  • ToolbarItem匹配:除了通过placement参数指定位置,也可以用索引toolbarItem(at: 0)来获取对应位置的ToolbarItem(适合Toolbar内只有一个元素的场景)。
  • 内部查找:找到ToolbarItem后,再在其内部通过find(viewWithId:)查找目标元素,就能成功定位到Toolbar中的Button。

内容的提问来源于stack exchange,提问作者Strassenrenner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:47:18