2016-02-17 11 views
5

Sto scrivendo un test in cui devo attendere che una determinata vista venga visualizzata nell'interfaccia utente utilizzando il framework di test UI EarlGrey. Così, ho guardato i documenti here e sto cercando di ottenere questo utilizzando GREYCondition. Ma sembra che GREYCondition richieda un controllo di condizione particolare o così da utilizzare. Qualcuno può consigliarmi su quale sia il formato della condizione? C'è un modo in cui posso passare nella mia vista alla condizione di farlo aspettare?Come posso configurare il mio test EarlGrey per attendere una vista o un evento?

risposta

6

In genere non è necessario attendere una vista particolare poiché la sincronizzazione integrata di EarlGrey dovrebbe farlo automaticamente. Ci sono varie impostazioni in GREYConfiguration che possono essere ottimizzate per aumentare (o diminuire) la misura in cui EarlGrey si sincronizza. Se nessuna di queste impostazioni funziona, puoi aggiungere la sincronizzazione esplicita con qualcosa come lo GREYCondition che hai creato e utilizzare l'API EarlGrey di primo livello per determinare se esiste una vista.

GREYCondition *waitForFoo = [[GREYCondition conditionWithName:@"wait for Foo" block:^BOOL{ 
    NSError *error; 
    // Checking if a view with accessibility ID "Foo" exists: 
    [[EarlGrey selectElementWithMatcher:grey_accessibilityID(@”Foo”)] 
     assertWithMatcher:grey_notNil() error:&error]; 
    return error == nil; 
}]; 

// Wait until 5 seconds for the view. 
BOOL fooExists = [waitForFoo waitWithTimeout:5]; 
if (fooExists) { 
    // Interact with Foo. 
} 
+0

Grazie mille per quello! –