2016-03-24 10 views

Antwort

2

Sie in der Regel Benachrichtigungen und andere Datenanforderungen werden sollte, um spöttisch die Dialoge kommen bis zu verhindern. Sie können die Benachrichtigung auch manuell akzeptieren und Ihre Tests erneut ausführen. Wir haben mit dem Einsatz des privaten UIAutomation-Frameworks experimentiert und gesehen, dass wir damit das erreichen können. Zum Beispiel zum Drücken der linken Alarmtaste.

@interface SystemAlert : NSObject 
- (void)tapLeftButton; 
@end 

@interface SystemAlert (ForMethodCompletionOnly) 
+ (id)localTarget; 
- (id)frontMostApp; 
- (id)alert; 
- (id)buttons; 
@end 

@implementation SystemAlert 

+ (void)load { 
    dlopen([@"/Developer/Library/PrivateFrameworks/UIAutomation.framework/UIAutomation" fileSystemRepresentation], RTLD_LOCAL); 
} 

- (void)tapLeftButton { 
    id localTarget = [NSClassFromString(@"UIATarget") localTarget]; 
    id app = [localTarget frontMostApp]; 
    id alert = [app alert]; 
    id button = [[alert buttons] objectAtIndex:0]; 
    [button tap]; 
} 

@end 
+0

Aber es scheint, UIAutomation konnte nicht auf einem nicht-Gefängnis gebrochenen Gerät arbeiten. Ich habe Einstellung-> Entwickler-> Benutzerschnittstelle Automatisierung aktivieren, aber die App stürzt ab und zeigen "UIAutomation ist nicht auf diesem Gerät aktiviert. UIAutomation muss in den Einstellungen aktiviert werden." – Paul

+0

Das ist komisch. Ich probierte es auf einem iPhone 6s und es funktionierte für mich gut. Könnten Sie das Gerät neu starten, sicherstellen, dass UIAutomation in den Einstellungen aktiviert ist und versuchen, die Tests erneut auszuführen? – khandpur