我创建了UIBarButtonItem
,customView
设置为BadgeButton
(添加了徽章标签的UIButton
)。
我同时为accessibilityIdentifier = "properIDHere"
和isAccessibilityElement = true
设置了aBadgeButton
和aBadgeButton.badgeLabel
[运行UITests时,徽章按钮是可见的,并且ID可以访问它,但是badgeLabel则不是。您知道为什么吗?
final class BadgeButton: MyBaseButton {
let badgeLabel = UILabel()
override func addSubviews() {
addSubview(badgeLabel)
}
override func setupConstraints() {
badgeLabel.snp.makeConstraints { make in
make.width.height.equalTo(badgeSize)
make.centerX.equalToSuperview().offset(badgeXOffset)
make.centerY.equalToSuperview().offset(badgeYOffset)
}
}
运行时标签需要框架或约束。
final class BadgeButton: UIButton {
let badgeLabel = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupView()
}
func setupView() {
self.addSubview(badgeLabel)
badgeLabel.frame = CGRect(x: self.frame.width / 2, y: 0, width: 20, height: 20)
//or you setup runTime Constraint
}
}
在BadgeButton
父/自定义视图上,尝试禁用辅助功能。保持UILabel处于启用状态。
[此后,回到您的XCTestCase
中,打印出XCUIApplication()。debugDescription以查看您现在是否能够在应用程序的元素层次结构中查看UILabel的可访问性信息。
将此帖子视为可能的重复:Xcode UI Tests can't find views that are added programatically