2016-02-17 3 views
5

Я пишу тест, где мне нужно дождаться появления определенного вида в моем пользовательском интерфейсе, используя фреймворк UI Test EarlGrey. Итак, я просмотрел документы here и пытаюсь достичь этого, используя GREYCondition. Но похоже, что для GREYCondition требуется конкретная проверка состояния или ее использование. Может ли кто-нибудь посоветовать мне, в каком формате это условие? Есть ли способ, с помощью которого я могу перейти на мой взгляд к состоянию, чтобы заставить его ждать его?Как настроить тест EarlGrey для ожидания просмотра или события?

ответ

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. 
} 
+0

Большое спасибо за это! –

Смежные вопросы