这个想法很简单。我有自定义UIButton
:
@IBDesignable class RadioButton: AttributedButton {
private let attributedView = AttributedView(frame: CGRect(x: 0, y: 0, width: 16, height: 16))
@IBInspectable var isActive: Bool = false {
didSet {
attributedView.removeFromSuperview()
attributedView.center = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)
attributedView.layer.borderWidth = 1
attributedView.cornerRadius = 8
attributedView.backgroundColor = isActive ? UIColor.scooter : UIColor.white
attributedView.layer.borderColor = isActive ? UIColor.scooter.cgColor : UIColor.silver.cgColor
addSubview(attributedView)
}
}
}
这是isActive = false
:
和isActive = true
:
当应用运行时,一切都按预期工作。但我需要在UITests下做同样的事情。我所做的只是点击那个按钮...但它没有被点击。为什么呢?
如何进行点按?
let termsRadioButton = app.buttons["termsRadioButton"]
termsRadioButton.tap()
点按后我会检查isActive = true
是否为{{1}},如果没有,则显示警告...警告不应该在uitests下,因为我真的点击了那个按钮。这有什么不对?
答案 0 :(得分:0)
如果按钮位于单元格或其他容器视图中,则必须将单元格设置为无法访问按钮才能访问。
请参阅我对此问题的回答:https://stackoverflow.com/a/42038145/5052894
如果您希望能够从UI测试中检查按钮的状态,我建议在按钮上设置isSelected
,这是UIButton继承的UIControl的一部分。然后,您可以使用XCUIElement.isSelected
访问按钮的状态。