Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

"loading loading" - это немного неопределенная концепция. Это будет зависеть от того, что конкретно вам нужно закончить.

Если вы используете 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 обертывают этот шаблон и дают ощущение, подобное эспрессо, взаимодействовать с WebViews.

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