Фон
Я изучаю миграцию нашей автоматизации на основе 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%
Я совершенно не могу понять, почему это происходит. Любая помощь?