Из XCUITest как я могу проверить состояние включения / выключения UISwitch?


Недавно я столкнулся с ситуацией, когда мне нужно было проверить текущее состояние включения/выключения (не включено ли оно для взаимодействия с пользователем) UISwitch из существующего набора XCUITests, а не XCTest, и переключить его в предопределенное состояние. Я добавил восстановление состояния приложения к старому существующему приложению, и теперь это мешает ряду существующих тестовых наборов между запусками, которые ожидали Uiswitch в определенных состояниях по умолчанию.

В отличие от XCTest, внутри XCUITest у вас нет прямого доступа к состоянию UISwitch.

Как это состояние определяется в Objective-C для XCUITest?

1 2

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 и избегает вмешательства восстановления состояния.