Из XCUITest как я могу проверить состояние включения / выключения UISwitch?
Недавно я столкнулся с ситуацией, когда мне нужно было проверить текущее состояние включения/выключения (не включено ли оно для взаимодействия с пользователем) UISwitch из существующего набора XCUITests, а не XCTest, и переключить его в предопределенное состояние. Я добавил восстановление состояния приложения к старому существующему приложению, и теперь это мешает ряду существующих тестовых наборов между запусками, которые ожидали Uiswitch в определенных состояниях по умолчанию.
В отличие от XCTest, внутри XCUITest у вас нет прямого доступа к состоянию UISwitch.
Как это состояние определяется в Objective-C для XCUITest?
1 ответ:
Не найдя это где-либо очевидным, я наткнулся на этот пост в блоге для аналогичной ситуации для языка Swift. Xcode UITests: Как проверить, включен ли UISwitch
С помощью этой информации я проверил и верифицировал два подхода к решению моей проблемы.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), я смог заставить состояние по умолчанию для всех UISwitches между запусками testcase и избегает вмешательства восстановления состояния.