iOS UI 测试看不到 UI 标签
iOS UI Testing cannot see the UILabel
我有一个 UI 测试问题,我从另一个开发人员那里获得了一些代码(他们不再参与该项目)。当出现错误时,代码会在屏幕顶部显示一个简单的警告框,我无法让我的 UI 测试看到其中的 UILabel
。
盒子的结构是这样的:
UIView
+ UILabel
+ UIButton
而在 UIView
的自定义 class 中有此代码:
// Original code
accessibilityIdentifier = "AlertBar" // Required for UI Testing.
// Bits I've added trying to make messageLabel visible to UI Test
isAccessibilityElement = true
accessibilityElements = [messageLabel]
messageLabel.accessibilityIdentifier = "AlertBarMessage"
messageLabel.isAccessibilityElement = true
}
如果我在我的 UI 测试中间断点并将应用程序转储到日志中,我可以看到 UIView
:
Attributes: Application, pid: 60317, label: 'The App'
Element subtree:
→Application, 0x600001df8c40, pid: 60317, label: 'The App'
Window (Main), 0x600001dfa060, {{0.0, 0.0}, {390.0, 844.0}}
... app ui logged here!
Other, 0x600001dce220, {{4.0, 47.0}, {382.0, 107.7}}, identifier: 'AlertBar'
很明显,警报对 XCTest 可见,但其中没有任何内容。从我添加的代码中可以看出,我一直在尝试各种方法,但到目前为止我还无法使 UILabel
(AlertBarMessage) 可见。
我错过了什么?
像往常一样,在输入 Whosebug 问题后,我返回代码并找出问题:-) 在这种情况下,它是视图上的 isAccessibilityElement = true
。使其可访问有效地隐藏了嵌套的 UILabel
因此关闭它修复了我的测试。
我知道辅助功能中有一些方法可以正确设置视图的辅助功能,以便屏幕阅读器将其视为单个元素并可以阅读消息,但我现在必须稍后处理。
我有一个 UI 测试问题,我从另一个开发人员那里获得了一些代码(他们不再参与该项目)。当出现错误时,代码会在屏幕顶部显示一个简单的警告框,我无法让我的 UI 测试看到其中的 UILabel
。
盒子的结构是这样的:
UIView
+ UILabel
+ UIButton
而在 UIView
的自定义 class 中有此代码:
// Original code
accessibilityIdentifier = "AlertBar" // Required for UI Testing.
// Bits I've added trying to make messageLabel visible to UI Test
isAccessibilityElement = true
accessibilityElements = [messageLabel]
messageLabel.accessibilityIdentifier = "AlertBarMessage"
messageLabel.isAccessibilityElement = true
}
如果我在我的 UI 测试中间断点并将应用程序转储到日志中,我可以看到 UIView
:
Attributes: Application, pid: 60317, label: 'The App'
Element subtree:
→Application, 0x600001df8c40, pid: 60317, label: 'The App'
Window (Main), 0x600001dfa060, {{0.0, 0.0}, {390.0, 844.0}}
... app ui logged here!
Other, 0x600001dce220, {{4.0, 47.0}, {382.0, 107.7}}, identifier: 'AlertBar'
很明显,警报对 XCTest 可见,但其中没有任何内容。从我添加的代码中可以看出,我一直在尝试各种方法,但到目前为止我还无法使 UILabel
(AlertBarMessage) 可见。
我错过了什么?
像往常一样,在输入 Whosebug 问题后,我返回代码并找出问题:-) 在这种情况下,它是视图上的 isAccessibilityElement = true
。使其可访问有效地隐藏了嵌套的 UILabel
因此关闭它修复了我的测试。
我知道辅助功能中有一些方法可以正确设置视图的辅助功能,以便屏幕阅读器将其视为单个元素并可以阅读消息,但我现在必须稍后处理。