2015-08-18 13 views
26

Esiste un modo affidabile per fare in modo che Espresso aspetti che WebViews finisca il caricamento?Fai in modo che Espresso attenda che WebView finisca di caricarsi

Ho provato l'approccio delineato here ma l'ho trovato inaffidabile. Ha anche altri svantaggi:

  • Si basa sulla sostituzione del WebChromeClient di WebView. Qualsiasi WebChromeClient esistente non può essere incluso, poiché WebViewrt non ha un metodo getWebChromeClient() per qualche motivo.
  • Richiede una specifica istanza di WebView, quindi ogni volta che avvio un'attività con una WebView devo ottenere l'istanza di WebView e registrare una nuova WebviewIdlingResource per essa.

Spero che qualcuno abbia una soluzione senza alcuno di questi inconvenienti. Speravo che il pacchetto espresso-web potesse fornire una soluzione, ma non sembra offrire nulla in merito al caricamento.

+0

ho trovato questo: https://github.com/awslabs/aws-device-farm-sample-app-for-android/blob/a8aa3218fda2a0c72b039f371a1b5d12e522051f/app/src/androidTest/ java/com/amazonaws/devicefarm/android/referenceapp/IdlingResources/WebViewIdlingResource.java – piotrek1543

risposta

6

Come accennato, c'è un componente aggiuntivo espresso chiamato web espresso per la gestione di visualizzazioni Web e del loro contenuto.

"finish loading" è un concetto un po 'vago. Dipenderà da che cosa specificamente vuoi finire.

Se si utilizza onWebView().check(<the you want to finish is in your webview>) che verrà restituito solo dopo che la visualizzazione Web è stata caricata e il check è riuscito.

Espresso-web è un punto di accesso per lavorare con WebViews su Android. Utilizza gli atomi dalla popolare API WebDriver per analizzare e controllare il comportamento di una WebView.

Analogamente a onData, le interazioni WebView sono in realtà composte da più atomi di visualizzazione. Un Atom può essere visto come ViewAction, un'unità autonoma che esegue un'azione nell'interfaccia utente. Tuttavia, devono essere correttamente orchestrati e abbastanza dettagliati. Web e WebInteraction racchiudono questo tema e danno un tocco di Espresso all'interazione con WebViews.

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

+0

Questo non risponde alla domanda –

+4

Non l'ho guardato da un po ', ma se ricordo correttamente 'check()' fallirà immediatamente se il contenuto non è ancora stato caricato. In altre parole, devo aspettare che il contenuto si carichi prima di chiamarlo. – vaughandroid

+0

cosa ha detto @vaughandroid –

Problemi correlati