2013-02-09 10 views
6

Ho bisogno di testare un'app per Android che include WebView con pulsanti.Monkeyrunner non tocca la webview

Monkeyrunner funziona bene per tutte le parti dell'app tranne WebView. Il pulsante in WebView ignora semplicemente i tocchi di Monkeyrunner. Vedo che il pulsante è stato cliccato perché è diventato grigio, ma il pulsante non fa nulla. Se uso il mouse su emulatore o dito su un dispositivo reale, il pulsante funziona alla grande.

Vedo da logcat che l'evento tocco è stato inviato all'app ma non c'è azione dall'app.

Alcuni codice:

final WebView w = (WebView) findViewById(R.id.webView1); 
String summary = "<html><body><b>Google</b><form action=http://google.com><input type=submit><input type=text></form></body></html>"; 
w.loadData(summary, "text/html", null); 

Disposizione:

<Button android:id="@+id/button1" android:text="Click me!" /> 
<WebView android:id="@+id/webView1" /> 

Monkeyrunner py:

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 
device = MonkeyRunner.waitForConnection(10) 
# android.widget.Button COORDINATES - THIS WORKS FINE 
device.touch(10,100, 'DOWN_AND_UP') 
# WEBVIEW BUTTON COORDINATES - BUTTON DOESN'T WORK 
device.touch(200,200, 'DOWN_AND_UP') 

avevo provato separatamente GIÙ ritardare UP - lo stesso risultato. Monkeyrunner da Python o da Java non funzionano. Gusti e involucri per monkeyrunner come ChimpChat non funzionano.

Penso che dovrebbe funzionare perché ci sono così tante app web/HTML5 e non potrebbe essere vero che non tutte sono state testate. Ma sembra contrario. Qualche idea o suggerimento su come applicare l'evento di tocco per i componenti di WebView?

+0

Stai provando su un dispositivo o un emulatore? –

+0

Almeno dovrebbe essere l'emulatore. Io preferisco entrambi. – Alex

+0

Funziona per me (così com'è) su un dispositivo ma non funziona sull'emulatore. –

risposta

3

Questo era un bug che avevo segnalato al team di Android. Alcune persone lo avevano confermato. Tuttavia con il tempo è stato unito a un altro bug e successivamente è stato chiuso un altro bug come "funziona come progettato". Fortunatamente dopo alcune prossime versioni di Android ha iniziato a funzionare come dovrebbe.

0

Ho testato il codice di esempio che hai fornito e sono stato in grado di eseguire un evento tocco sul controllo WebView senza problemi. Ci sono alcuni modi che mi veniva in mente che renderanno il lavoro per voi:

  • Assicurarsi che il tocco è nella posizione corretta, si noti che la funzione touch utilizza pixel dello schermo e non immergere che molto probabilmente sii diverso quando provi a testare su più dispositivi. È possibile ottenere la posizione esatta del pulsante utilizzando la "Posizione puntatore" nell'app "Dev Tools" fornita con il proprio emulatore.
  • È possibile utilizzare eventi di tastiera invece di eventi di tocco per navigare nell'interfaccia utente. Ad esempio, l'applicazione di esempio che hai fornito può essere fatto in questo modo:

    from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 
    device = MonkeyRunner.waitForConnection(10) 
    device.press('KEYCODE_DPAD_DOWN') 
    device.press('KEYCODE_DPAD_CENTER') 
    

    e produrrà l'effetto desiderato

0

Questa non è una risposta, ma ho pensato che potrebbe aiutare.

Square ha rilasciato una nuova struttura di test per strumentazione chiamata "Spoon". Ti permette di fare tutto ciò che desideri e funziona abbastanza bene nei pochi test che ho eseguito. Non ho provato le visualizzazioni web ma penso che dovrebbe riguardare anche quelle. È stato creato da Jake Wharton (il ragazzo dietro ActionBarSherlock). Ecco il link se volete provarlo:

http://square.github.com/spoon/

Problemi correlati