如何通过无障碍标识符获取SwiftUI中特定person视图内的car元素
解决方案
要定位到特定person视图内的car元素,你需要先找到目标父元素(person_x),再从它的子元素中筛选出car,而不是直接用descendants的下标方式访问。
具体实现代码
- 分步定位:先获取目标person元素,再获取其内部的car元素
// 先定位指定的person元素 guard let targetPerson = app.otherElements["person_1"] else { // 处理元素不存在的场景 return } // 从person元素中获取内部的car元素 let targetCar = targetPerson.otherElements["car"]
- 简化写法:合并为一行代码
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
相关产品推荐
相关产品推荐

