【问题标题】:iOS UITest: How to test custom accessibility actions?iOS UITest:如何测试自定义可访问性操作?
【发布时间】:2019-04-21 18:20:18
【问题描述】:

我想支持 VoiceOver。我在UITableViewCell 中有一个UIButton。根据最佳实践,我禁用了可访问性按钮 (.isAccessibilityElement = false) 并为单元格实现了自定义可访问性操作 (accessibilityCustomActions, NSAccessibilityCustomAction)。

这样,VoiceOver 不会将按钮作为自己的元素来查找和读取。为了使按钮后面的功能可访问,我向单元格添加了自定义可访问性操作。使用自定义操作,用户可以通过上下滑动来选择操作。然后双击执行。

现在我想用 UITest 来测试这个动作。无法访问 UITest 内的按钮,因为它已禁用可访问性。

如何在 UITest 中执行自定义可访问性操作?

【问题讨论】:

  • 我不确定您是否应该为配音编写 UITest,因为它需要用户交互。功能本身的核心需求是用户交互。而且自动化不涉及用户交互。

标签: ios accessibility xcode-ui-testing voiceover xcuitest


【解决方案1】:

如何在 UITest 中执行自定义可访问性操作?

实际上,你不能使用 {Xcode 11, iOS 13},即使你可以在 UITest 中获得一系列操作,它也是 nil,你不能从 XCUITEST 中触发选择器 (UI 测试不像单元测试那样获得对应用程序的代码级访问权限).

手动测试是目前使用 VoiceOver 测试无障碍自定义操作的唯一方法。

看看 Apple 工程师在 2019 年 WWDC 期间提供的this answer

【讨论】:

    【解决方案2】:

    不知道我的问题是否正确,或者这是否可行,但您可以尝试coordinate(withNormalizedOffset:) 函数来单击该 UIButton

    例如。

    let buttonRectMidX = 300.0
    let cellWidth = 320.0
    let buttonRectMidY = 25.0
    let cellHeight = 50.0
    
    
    app.tables.firstMatch
        .cells.element(boundBy: 2)
        .coordinate(withNormalizedOffset: CGVector(dx: buttonRectMidX / cellWidth, dy: buttonRectMidY / cellHeight))
        .tap()
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      相关资源
      最近更新 更多