У меня проблема, если я попытаюсь разрешить серийное системное оповещение, сработает только один раз, а следующее оповещение не «разрешит», я погуглю больше времени и узнаю об этом сообщении: (Тестирование пользовательского интерфейса Xcode 7: как отклонить серию системных предупреждений в коде) Ничего.. не работает. Вот мой текущий код, первое предупреждение успешно «разрешено», следующее предупреждение не обнаружено.
XCUIApplication *app = [[XCUIApplication alloc] init];
app.launchEnvironment = @{
@"isUITest" : @YES,
@"withFakeData" : fakeData
};
[app launch];
for (int i = 1; i <= self.possibleSystemAlerts; i++) {
NSLog(@"%d", i);
XCTestExpectation *expectation = [self expectationWithDescription:@"High Expectations"];
id monitor = [self addUIInterruptionMonitorWithDescription:@"Push notifications" handler:^BOOL(XCUIElement *_Nonnull interruptingElement) {
XCUIElement *element = interruptingElement;
XCUIElement *allow = element.buttons[@"Allow"];
XCUIElement *ok = element.buttons[@"OK"];
if ([ok exists]) {
[ok tap];
[expectation fulfill];
return YES;
}
if ([allow exists]) {
[allow forceTap];
[expectation fulfill];
return YES;
}
return NO;
}];
[app tap];
[self waitForExpectationsWithTimeout:6.0 handler:^(NSError *error) {
if (error) {
NSLog(@"Timeout Error: %@", error);
}
}];
[self removeUIInterruptionMonitor:monitor];
}
С уважением, Иван.
УПД:
Хорошо, я нашел решение, как после первого оповещения попробовать закрыть второе (спасибо за этот сайт: http://www.it1me.com/it-answers?id=32148965&s=Template:Viper&ttl=Xcode+7).+UI+Тестирование%3A+как+закрыть+серию+системных+предупреждений+в+коде) Просто всегда нужно возвращать НЕТ.
Но другая проблема...
t = 10.18s Find: Descendants matching type Alert
t = 10.18s Find: Identity Binding
t = 11.19s Find the "Allow “MyApp” to access your location while you use the app?" Alert (retry 1)
t = 11.19s Snapshot accessibility hierarchy for com.apple.springboard
t = 11.26s Find: Descendants matching type Alert
t = 11.26s Find: Identity Binding
t = 12.27s Find the "Allow “MyApp” to access your location while you use the app?" Alert (retry 2)
t = 12.27s Snapshot accessibility hierarchy for com.apple.springboard
t = 12.33s Find: Descendants matching type Alert
t = 12.34s Find: Identity Binding
t = 12.42s Assertion Failure: UI Testing Failure - No matches found for "Allow “MyApp” to access your location while you use the app?" Alert
Query input was {(
Alert 0x7febe8731630: traits: 72057602627862528, {{25.0, 193.0}, {270.0, 182.0}}, label: '“MyApp” Would Like to Send You Notifications'
)}
Он попытался закрыть третье уведомление, а не второе, конечно, он не нашел это системное предупреждение...