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?
5
A
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.
}
Wielkie dzięki za to! –