Проверьте, виден ли диалог - Эспрессо
Я обнаружил в 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.