XCTestCase如何断言NSTextView的字符串内容?
解决macOS UI测试中NSTextView的文本断言问题
嘿,我刚好踩过这个坑!在macOS的UI测试里,你拿到的prefs.textViews.firstMatch是XCUIElement类型——它是UI测试框架对界面控件的代理包装,并不是直接的NSTextView实例,所以直接访问stringValue肯定行不通,因为XCUIElement本身没有这个属性。
要获取文本视图的实际内容,你可以通过**键值编码(KVC)**来读取底层控件的stringValue属性,具体代码如下:
// 先获取目标文本视图的XCUIElement引用 let targetTextView = prefs.textViews.firstMatch // 通过KVC获取文本值,并做类型转换 guard let actualText = targetTextView.value(forKey: "stringValue") as? String else { XCTFail("无法获取文本视图的内容") return } // 执行断言 XCTAssertEqual(actualText, "Enter text below")
额外提个小建议:如果你的文本视图在代码里设置了accessibilityIdentifier,比如:
textView.accessibilityIdentifier = "settingsDescriptionTextView"
那在UI测试里用textViews["settingsDescriptionTextView"]来定位会比firstMatch更可靠,能避免后续界面调整导致元素顺序变化,定位到错误的控件。
内容的提问来源于stack exchange,提问作者ocodo
相关产品推荐
相关产品推荐

