Тестирование пользовательского интерфейса Xcode: метка staticText не обновляется при обновлении текста?

Фон

Я изучаю миграцию нашей автоматизации на основе Appium на тестирование пользовательского интерфейса Xcode. Учитывая, что наше приложение написано на Objective C, мне также нужно использовать Objective-C для тестового кода.

Приложение, для которого я автоматизирую тесты, имеет индикатор выполнения, значения которого я хочу прочитать. Это не UIAProgressIndicator, просто UIAStaticText, значение которого увеличивается от "0" до "100%".

Доступ к XCUIElement, соответствующему этому staticText, можно получить как

[[app staticTexts] elementBoundByIndex:1]

Индикатор выполнения будет занимать разное количество времени, и мне нужно следить за прогрессом, который будет включать чтение значения (и, конечно, его анализ).

Пробовал получить значение разными способами - [XCUIElement value] и [XCUIElement label].

NSString *prog = [[[app staticTexts] elementBoundByIndex:1] label];

Подход label дает мне строку прогресса, поэтому я делаю это в цикле, например.

  int i=0;
  while (i<5) {
     //custom sleep method
     [self.helper threadSleepForSeconds:[NSNumber numberWithInt:2]];
     //now get progress text
     NSString *prog = [[[app staticTexts] elementBoundByIndex:1] label];

     i++;
    }

Однако по мере изменения хода выполнения атрибут label не обновляется — кажется, что он продолжает показывать первое прочитанное значение, как будто оно где-то кэшировано.

то есть вывод журнала показывает (при условии, что первое прочитанное значение было 19%):

19%
19%
19%
19%

Я совершенно не могу понять, почему это происходит. Любая помощь?


person Vish    schedule 02.12.2015    source источник


Ответы (1)


Синтезированного события нет, поэтому Xcode не пытается сделать новый снимок элементов пользовательского интерфейса на экране. Это сделано специально, чтобы назначение нескольких переменных элемента пользовательского интерфейса в определенном представлении не перегружало ваш компьютер.

К сожалению, ручное тестирование может быть вашим единственным вариантом, если вас не устраивает модульное тестирование.

person James Goe    schedule 04.12.2015