// // UITestTapHelper.swift // suixinkanUITests // // Created by Codex on 2026/6/26. // import XCTest /// 在 SwiftUI 列表中定位并点击带文案的入口。 enum UITestTapHelper { /// 优先点击按钮,其次点击静态文案。 static func tapLabel( _ label: String, in app: SuixinkanApp, timeout: TimeInterval = 8, file: StaticString = #filePath, line: UInt = #line ) { if let target = findLabel(label, in: app, timeout: timeout) { target.tap() app.waitForGlobalLoadingToDisappear() return } app.application.swipeUp() if let target = findLabel(label, in: app, timeout: 2) { target.tap() app.waitForGlobalLoadingToDisappear() return } XCTFail("未找到可点击文案:\(label)", file: file, line: line) } /// 查找可点击的按钮或文案。 private static func findLabel(_ label: String, in app: SuixinkanApp, timeout: TimeInterval) -> XCUIElement? { let button = app.application.buttons[label] if button.waitForExistence(timeout: timeout) { return button } let containsButton = app.application.buttons.matching( NSPredicate(format: "label CONTAINS %@", label) ).firstMatch if containsButton.waitForExistence(timeout: 2) { return containsButton } let text = app.application.staticTexts[label] if text.waitForExistence(timeout: 2) { return text } return nil } }