2016-02-17 7 views
5

Piszę test, w którym muszę poczekać, aż dany widok pojawi się w moim interfejsie użytkownika, korzystając ze struktury testowania interfejsu użytkownika. Tak więc, spojrzałem na dokumenty here i staram się to osiągnąć, używając GREYCondition. Wygląda jednak na to, że GREYCondition wymaga szczególnej kontroli stanu. Czy ktoś może mi doradzić, jaki jest warunek tego stanu? Czy istnieje jakiś sposób, w jaki mogę przekazać moim zdaniem warunek, aby czekać na to?Jak skonfigurować mój test EarlGrey tak, aby oczekiwał na widok lub wydarzenie?

Odpowiedz

6

Zazwyczaj nie należy czekać na określony widok, ponieważ wbudowana synchronizacja EarlGrey powinna automatycznie to zrobić dla ciebie. Istnieją różne ustawienia w GREYConfiguration, które można zmodyfikować, aby zwiększyć (lub zmniejszyć) zakres synchronizacji EarlGrey. Jeśli żadne z tych ustawień nie działa, możesz dodać jawną synchronizację z utworzoną przez siebie wersją, taką jak GREYCondition, i użyć interfejsu API EarlGrey najwyższego poziomu, aby określić, czy widok istnieje.

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

Wielkie dzięki za to! –

Powiązane problemy