【问题标题】:Add button in SwiftUI Stepper not hittable during XCTest在 XCTest 期间,SwiftUI Stepper 中的添加按钮不可点击
【发布时间】:2022-11-12 11:49:31
【问题描述】:

我的步进器定义如下(独立 WatchOS 应用程序)

Stepper(value: $myCount) {
    Text("\(myCount)").font(.footnote).accessibilityIdentifier("count_label")
}.accessibilityIdentifier("my_stepper")

它在真实/模拟器设备上功能齐全。在下面定义的测试用例中,我无法调用增量按钮。 (我得到一个错误,按钮本身是不可点击的,永远)

XCTAssertTrue(app.steppers["my_stepper"].waitForExistence(timeout: 10))
XCTAssertFalse(app.steppers["my_stepper"].buttons["Remove"].isEnabled)
XCTAssertTrue(app.steppers["my_stepper"].buttons["Add"].isEnabled)
-> (Error)  app.steppers["my_stepper"].buttons["Add"].tap()

错误 kAXErrorCannotComplete 执行 AXAction 元素 AX 元素 pid 上的 kAXScrollToVisibleAction

我尝试forceTap(使用坐标)没有运气。知道如何调用增量操作吗?

【问题讨论】:

  • 您是否尝试使用记录器生成代码以查看 Xcode 如何查看这些按钮?另外,只是一个建议:在不断使用app.steppers["my_stepper"] 的情况下,您最好将其声明为变量并直接访问它。
  • 如果它是屏幕上唯一的步进器,我想你可以试试let stepper = app.otherElements["Stepper"].firstMatch
  • 什么是录音机?任何链接,所以我可以试试?
  • 是的,检查 04:40:https://www.youtube.com/watch?v=ECuc3qoRm90
  • 我会试一试。这可能会揭开谜团

标签: swiftui xctest watchos


【解决方案1】:

虽然视图堆栈中存在递增和递减按钮,但它们是不可点击的。 SwiftUI 中可能存在影响 WatchOS 或所有平台的错误。我发现的最好方法暂时地解决问题是使用以下 tutorial

app.steppers["my_stepper"].coordinate(withNormalizedOffset: CGVector(dx: 0.9, dy: 0.5)).tap()
    

这是一种可能会在不同设备上失败的解决方法。对我来说,它只适用于超 49 毫米 watchOS 9.0.接受这个直到找到更好的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-21
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    相关资源
    最近更新 更多