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

如何通过无障碍标识符获取SwiftUI中特定person视图内的car元素

解决方案

要定位到特定person视图内的car元素,你需要先找到目标父元素(person_x),再从它的子元素中筛选出car,而不是直接用descendants的下标方式访问。

具体实现代码

  1. 分步定位:先获取目标person元素,再获取其内部的car元素
// 先定位指定的person元素
guard let targetPerson = app.otherElements["person_1"] else {
    // 处理元素不存在的场景
    return
}
// 从person元素中获取内部的car元素
let targetCar = targetPerson.otherElements["car"]
  1. 简化写法:合并为一行代码
let targetCar = app.otherElements["person_1"].otherElements["car"]

关键说明

  • 如果你明确知道car元素的具体类型(比如是按钮、图像视图),可以用对应的XCUIElementQuery类型替换otherElements,比如buttons、images,定位会更精准:
    let targetCar = app.otherElements["person_1"].buttons["car"]
    
  • 你之前的写法app.descendants(matching: .any)["person_1"]无法正确识别层级,因为descendants返回的是所有后代元素的集合,直接用下标访问不会保留父子层级关系,必须先定位到父元素,再查询其子元素。
  • 父元素设置的.accessibilityElement(children: .contain)已经确保子元素被包含在父元素的无障碍层级中,所以子元素可以被父元素的查询访问到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:41:01