Я пишу тест, где мне нужно дождаться появления определенного вида в моем пользовательском интерфейсе, используя фреймворк UI Test EarlGrey
. Итак, я просмотрел документы here и пытаюсь достичь этого, используя GREYCondition
. Но похоже, что для GREYCondition
требуется конкретная проверка состояния или ее использование. Может ли кто-нибудь посоветовать мне, в каком формате это условие? Есть ли способ, с помощью которого я могу перейти на мой взгляд к состоянию, чтобы заставить его ждать его?Как настроить тест EarlGrey для ожидания просмотра или события?
5
A
ответ
6
Обычно вам не нужно ждать определенного вида, поскольку встроенная синхронизация EarlGrey должна автоматически сделать это за вас. Существуют различные настройки в GREYConfiguration, которые можно настроить, чтобы увеличить (или уменьшить) степень, в которой синхронизируется EarlGrey. Если ни одна из этих настроек не работает, вы можете добавить явную синхронизацию с чем-то вроде GREYCondition
, который вы создали, и использовать API-интерфейс EarlGrey верхнего уровня, чтобы определить, существует ли представление.
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.
}
Большое спасибо за это! –