使用 XCTestCases 类中的可访问性标识符访问 NavigationLink - SwiftUI
Posted
技术标签:
【中文标题】使用 XCTestCases 类中的可访问性标识符访问 NavigationLink - SwiftUI【英文标题】:Access NavigationLink using accessibility identifier in XCTestCases class - SwiftUI 【发布时间】:2021-05-25 05:43:57 【问题描述】:我最近开始研究 SwiftUI 框架,我正在使用 XCTest 编写 UI 测试用例。
NavigationLink("Login", destination: TabBarDashboardView())
.accessibility(identifier: "linkLogin")
.frame(width: 200, height: 50, alignment: .center)
.foregroundColor(.white)
.background(Color.red)
.padding([.top, .bottom], 40)
在 XCTestCase 类中,我尝试了以下代码来点击 NavigationLink:
func testLoginActionAndNavigation() throws
let linkLogin = self.app.navigationBars.links["linkLogin"]
linkLogin.tap()
XCTAssertEqual(linkLogin.title, "linkLogin")
我收到以下错误并且测试用例失败:
Failed to get matching snapshot: No matches found for Descendants matching type Link from input ( NavigationBar, identifier: '_TtGC7SwiftUI19UIHosting' )
我在 XCTestCase 类中搜索与 NavigationLink 访问相关的内容,但没有找到任何有效/正确的文档。
如果有人已经在这个主题上工作过,请你帮助我。
【问题讨论】:
有什么更新吗?.... 【参考方案1】:不要寻找匹配的 xxx.links[...]
元素 [我相信它实际上是用于单击 WebView 内的链接],尝试:
let linkLogin = self.app.otherElements.buttons["linkLogin"]
(我基本上遇到了同样的问题,在尝试了很多事情之后,最终还是做了一个recording 并看到了同样的结果)。
【讨论】:
以上是关于使用 XCTestCases 类中的可访问性标识符访问 NavigationLink - SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章
使用 XCUIElementQuery 在 SwiftUI 中查找嵌入在表单中的 DatePicker() 的可访问性(标识符:)