iOS XCTests - 如何验证复选框按钮是否被选中

iOS XCTests - how to verify checkbox button is checked or not

我正在尝试验证我的 XCTests 代码是否选中了复选框。 我看到复选框已在 UI 中选中,但我的代码 returns "NO" 感谢帮助。下面是我的代码

XCUIElement *checkBox = [[[[textField childrenMatchingType:XCUIElementTypeOther] elementBoundByIndex:1] childrenMatchingType:XCUIElementTypeButton] elementBoundByIndex:1];

BOOL isChecked = checkBox.isSelected;

isChecked returns "NO" 即使复选框被选中

自从我玩 XCTests 以来已经有一段时间了,但我想我用过类似 [checkBox.value boolValue] 的东西。

isSelected 属性用于可访问性。它不指示复选框是否被选中。它基本上 returns 控件当前是否在打开辅助功能时 selected(例如,对于视障用户,iOS 将在屏幕上 select 控件并将它们读到用户)。

您似乎已经使用 UIButton 制作了自己的复选框以提供类似复选框的功能。如果您创建了自己的自定义控件来切换 UIButton 的状态,您还必须实现一种存储 selection 状态的方法。如果没有看到您实施的其余部分,我们任何人都无法知道如何获取状态。

我建议使用 UISwitch 控件,它以原生、一致的方式提供您想要的功能。如果你这样做,那将是一个简单的测试:

BOOL isChecked = [switch isOn];