【问题标题】:KIF: is there a way to get all the accessibility labels in a current screen?KIF:有没有办法在当前屏幕中获取所有可访问性标签?
【发布时间】:2015-08-20 17:33:05
【问题描述】:

我正在使用 KIF 测试 iOS 应用程序,我想知道是否有办法在当前屏幕中获取所有可访问性标签。我想得到一个字符串数组,其中每个元素都是此屏幕具有的可访问性标签。

【问题讨论】:

  • 你想做什么?试图读取 UI 的状态是一种反模式。您的测试应该采取一系列已知的操作并断言它们成功。
  • 我正在尝试检查表是否按字母顺序排序,但我不知道如何准确地实现这一点。因此,我想获取所有可访问性标签并检查它们的名称是否是字母。
  • 要检查表格是否正确排序,您应该检查所有行的值是否正确。 (如果您不知道这些值应该提前是什么,请考虑更改您的测试方法。)
  • 我不同意读取 UI 状态是一种反模式,尤其是在测试中。一个好的测试会在测试失败时提供调试信息,而屏幕的完整内容是其中很大一部分——尤其是在 CI 上运行时,您可能无法看到目标设备的屏幕。应该如何编写测试与如何从屏幕上读取信息的问题无关。

标签: kif kif-framework


【解决方案1】:

这个函数可以返回视图中的所有accessibilityLabel:

func getAllAccessibilityLabel(_ viewRoot: UIView) -> [String]! {

    var array = [String]()
    for view in viewRoot.subviews {
        if let lbl = view.accessibilityLabel {
            array += [lbl]
        }

        array += getAllAccessibilityLabel(view)
    }

    return array
}

func getAllAccessibilityLabelInWindows() -> [String]! {
    var labelArray = [String]()
    for  window in UIApplication.shared.windows {
        labelArray += self.getAllAccessibilityLabel(window)
    }

    return labelArray
}

并在 KIF 测试中调用它:

let labelArray = getAllAccessibilityLabelInWindows()
print("labelArray = \(labelArray)")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多