如何 UI 测试属性字符串是否被划掉

How to UI test if an attributed string is crossed out or not

我正在用这个方法划掉一个字符串

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Your Text")
    attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))

yourLabel.attributedText = attributeString

现在,我正在创建一个 UI 测试来测试标签。我想检查标签是否被划掉(删除线)。

我该怎么做?

这是UI测试代码

let mastertableviewTable = app.tables["masterTableview"]
let staticText = mastertableviewTable.staticTexts["task two"]

您可以使用 attribute(attrName:location:range:).

var range: NSRange
var attributedText: NSAttributedString

...

if attributedText.attribute(NSStrikethroughStyleAttributeName, at: attributedText.length - 1, effectiveRange: &range) != nil {
    // OK!
} else {
    // Not OK!
}

您可能会使用像

这样的屏幕快照比较工具

https://github.com/uber/ios-snapshot-test-case

安装非常简单。虽然我提到的工具旨在用于单元测试,但它也可以在 UI 测试目标中完美运行。

唯一的答案是,我不应该 UI 测试内容的外观,但我应该测试特定内容是否可用。 由于无法在 UI 测试中获取对象属性,例如颜色、字体大小...