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

Posted

技术标签:

【中文标题】如何 UI 测试属性字符串是不是被划掉【英文标题】:How to UI test if an attributed string is crossed out or not如何 UI 测试属性字符串是否被划掉 【发布时间】:2019-10-20 06:41:00 【问题描述】:

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

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"]

【问题讨论】:

使用单元测试,而不是 UI 测试。 【参考方案1】:

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

【讨论】:

【参考方案2】:

你可能会使用屏幕快照比较工具,如

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

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

【讨论】:

【参考方案3】:

您可以使用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!

【讨论】:

在 UI 测试中?怎么样?

以上是关于如何 UI 测试属性字符串是不是被划掉的主要内容,如果未能解决你的问题,请参考以下文章

断点被划掉了,我怎样才能使它们有效?

从123……181920中划掉15个数字剩下的数最小是多少?

在 Chrome 开发工具中,为啥这个 css background-color 淡出但没有被划掉?

如何快速编写[UITableViewCell 类]?

AVPlayerViewController 不按 url 播放视频

如何获取特定元素的文本 - Xamarin UI 测试