如何根据无障碍标识符与标签定位并交互指定按钮?
解决无障碍按钮定位与交互问题
从错误输出可知,当前存在两个标识符为car的按钮:
Button, identifier: 'car', label: 'add'
Button, identifier: 'car', label: 'minus-grey', Disabled
你之前的方法失败原因主要是:
children.buttons["add"]是按**标识符(identifier)**匹配,而非标签(label),但目标按钮的标识符是car,所以无法命中;- 单纯的
label == "add"谓词没有结合标识符条件,无法精准锁定目标元素。
以下是几种可行的交互方案:
方案1:复合谓词精准匹配标识符+标签
同时指定标识符和标签两个条件,确保定位到唯一目标:
let predicate = NSPredicate(format: "identifier == %@ AND label == %@", "car", "add") if let addButton = children.buttons.element(matching: predicate) { addButton.tap() }
方案2:按标识符过滤后选可用按钮
利用另一个按钮处于禁用状态的特性,先筛选标识符为car的按钮,再取其中启用的那个:
let carButtons = children.buttons.matching(identifier: "car") if let addButton = carButtons.element(matching: .isEnabled) { addButton.tap() }
方案3:通过索引定位(仅临时应急用)
如果UI结构固定,确定目标按钮是第一个标识符为car的元素,可直接按索引获取:
let carButtons = children.buttons.matching(identifier: "car") if carButtons.count > 0 { carButtons.element(boundBy: 0).tap() }
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

