Проверьте, виден ли диалог - Эспрессо

Я обнаружил в Stackru что-то подобное о проверке, когда диалог виден:

 onView(withText("Yes"))
                    .inRoot(isDialog())
                    .check(matches(isDisplayed()))
                    .perform(click());

Конечно, это работает, если диалог с кнопкой "да" виден, но в другом сценарии, если диалог будет невидимым, я получил сбой:

android.support.test.espresso.NoMatchingViewException: нет подходящих представлений в иерархии: с текстом: есть "Да"

Итак, как написать, что если диалоговое окно существует, нажмите "да", а если оно не существует, то ничего не будет щелкнуто?

1 ответ

Решение

Вы можете попробовать это:

  onView(withText("Yes")).inRoot(isDialog()).withFailureHandler(new FailureHandler() {
            @Override
            public void handle(Throwable error, Matcher<View> viewMatcher){

            }
        }).check(matches(isDisplayed())).perform(customClick());

//if dialog is visible, perform click, otherwise do nothing.
Другие вопросы по тегам