objective-c - 如何从 XCUITest 检查 UISwitch 的开/关状态?

标签 objective-c xcode-ui-testing uiswitch

我最近遇到了一种情况,我需要能够从现有的 XCUITests 桶而不是 XCTest 中检查 UISwitch 的当前开/关状态(而不是它是否为用户交互启用),并切换它到一个预先确定的状态。我已将应用程序状态恢复添加到旧的现有应用程序,这现在干扰了预期 UISwitch 处于特定默认状态的运行之间的许多现有测试用例。

与 XCTest 不同,在 XCUITest 中您无法直接访问 UISwitch 状态。

在 Objective-C 中如何为 XCUITest 确定这种状态?

最佳答案

我没有在任何明显的地方找到它,我偶然发现了这篇博文,了解 Swift 语言的类似情况。 Xcode UITests: How to check if a UISwitch is on

根据这些信息,我测试并验证了两种解决问题的方法。

1) 断言状态是开还是关

XCUIElement *mySwitch = app.switches[@"My Switch Storyboard Accessibility Label"];
// cast .value to (NSString *) and test for @"0" if off state 
XCTAssertEqualObjects((NSString *)mySwitch.value, @"0", @"Switch should be off by default.");  // use @"1" to test for on state

2) 测试开关的状态是打开还是关闭然后切换它的状态

XCUIElement *mySwitch = app.switches[@"My Switch Storyboard Accessibility Label"];
// cast .value to (NSString *) and test for @"0" if off state 
if (![(NSString *)mySwitch.value isEqualToString:@"0"])
        [mySwitch tap];  // tap if off if it is on

使用方法 (2),我能够在测试用例运行之间强制所有 UISwitch 进入默认状态并避免状态恢复干扰。

关于objective-c - 如何从 XCUITest 检查 UISwitch 的开/关状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44222966/

相关文章:

iphone - 记录电话对话 - ios

objective-c - 使用钥匙串(keychain)在 xcode 4 中存储用户名和密码

objective-c - 为什么 NSDecimalNumber 出现在 NSString 中?

ios - 从 UITests 执行 UIAccessibilityCustomAction

ios - 无法在旧项目上运行 UI 测试

ios - UISwitch 切换目标未执行

c - 检索正在运行的进程的名称

ios - UI 测试 : deinit is not called

uitableview - 更改 ViewController 时保持原型(prototype)单元的 UISwitch 状态

java - 尽管未检查开关,isChecked() 返回 true