Сделайте Espresso дождаться завершения WebView

Есть ли http://i.imgur.com/gZnURlx.jpggea надежный способ заставить Espresso ждать завершения WebViews?

Я пробовал описанный здесь подход, но нашел его ненадежным. У этого также есть и другие недостатки:

  • Он полагается на замену WebChromeClient WebView. Любой существующий WebChromeClient нельзя обернуть, так как WebViewrt по какой-то причине не имеет метода getWebChromeClient ().
  • Для этого требуется конкретный экземпляр WebView, поэтому каждый раз, когда я запускаю Activity с помощью WebView, я должен получить экземпляр WebView и зарегистрировать для него новый WebviewIdlingResource.

Я надеюсь, что у кого-то есть решение без каких-либо из этих недостатков. У меня были надежды на то, что пакет эспрессо-сети может предоставить решение, но он, похоже, ничего не говорит о загрузке.

Solutions Collecting From Web of "Сделайте Espresso дождаться завершения WebView"

Как вы упомянули, есть эспрессо-надстройка, называемая espresso-web для работы с веб-просмотрами и их контентом.

«Финишная загрузка» – это немного неопределенная концепция. Это будет зависеть от того, что конкретно вам хочется закончить.

Если вы используете onWebView().check(<the you want to finish is in your webview>) который будет возвращен только после загрузки веб-представления, и check прошла успешно.

Espresso-web – это точка входа для работы с WebViews на Android. Он использует Atoms из популярного API WebDriver для интроспекции и управления поведением WebView.

Подобно onData, взаимодействия WebView фактически состоят из нескольких View Atoms. Атом можно рассматривать как ViewAction, автономную единицу, которая выполняет действие в вашем пользовательском интерфейсе. Тем не менее, они должны быть правильно организованы и довольно многословны. Web и WebInteraction обертывают этот шаблон и дают ощущение эспрессо взаимодействовать с WebView.

https://google.github.io/android-testing-support-library/docs/espresso/web/index.html