在XCTest中如何通过XCUIApplication访问TextEditor组件
SwiftUI TextEditor UI测试访问器说明
SwiftUI的TextEditor在XCUITest中对应的底层元素类型为UITextView,因此你需要填写的正确访问器是textViews。你最开始测试时textViews不生效并非访问器本身错误,通常是前置触发条件缺失导致。
具体使用方案
标准写法(推荐)
首先需要在SwiftUI业务代码中为TextEditor设置和测试代码匹配的accessibility标识:
TextEditor(text: $inputContent) .accessibilityIdentifier("Editor") // 标识字符串需和测试代码中保持一致
对应的UI测试完整代码:
let app = XCUIApplication() app.launch() let textEditor = app.textViews["Editor"] textEditor.tap() // 先激活输入框,避免未处于第一响应者导致输入失效 textEditor.typeText("Hello, world")
通用访问器替代方案
如果不确定当前元素的对应类型,可以使用通用访问器查询,无需指定元素类型,只要accessibility标识匹配即可定位到元素:
// 简洁通用写法 let textEditor = app.any["Editor"] // 等效的完整通用写法 let textEditor = app.descendants(matching: .any)["Editor"]
内容的提问来源于stack exchange,提问作者Ethan Fraser
相关产品推荐
相关产品推荐

