2017-08-22 2 views
1

Je suis en cours d'exécution des codes d'essai de Espresso WebEspresso échecs de WebView sur le simulateur 8.0 Android

@Test 
public void typeTextInInput_clickButton_SubmitsForm() { 
    // Lazily launch the Activity with a custom start Intent per test. 
    mActivityRule.launchActivity(withWebFormIntent()); 

    // Selects the WebView in your layout. If you have multiple WebView objects, 
    // you can also use a matcher to select a given WebView, 
    // onWebView(withId(R.id.web_view)). 
    onWebView() 
     // Find the input element by ID. 
     .withElement(findElement(Locator.ID, "text_input")) 

     // Clear previous input and enter new text into the input element. 
     .perform(clearElement()) 
     .perform(DriverAtoms.webKeys(MACCHIATO)) 

     // Find the "Submit" button and simulate a click using JavaScript. 
     .withElement(findElement(Locator.ID, "submitBtn")) 
     .perform(webClick()) 

     // Find the response element by ID, and verify that it contains the 
     // entered text. 
     .withElement(findElement(Locator.ID, "response")) 
     .check(webMatches(getText(), containsString(MACCHIATO))); 
} 

Il a travaillé sur le 7.1.1 simulateur mais pas sur le 8,0 je reçu le message d'erreur

causée par: java.lang.RuntimeException: erreur dans evaluationEvaluation: état: 13 valeur: {message = Impossible de définir la fin de la sélection} de hasMessage: true message: Impossible de définir la fin de la sélection

si je change le code

element. 
     .perform(clearElement()) 
     .perform(DriverAtoms.webKeys(MACCHIATO)) => perform(webClick()) 

Ensuite, il fonctionne. Donc je suppose qu'il peut trouver l'élément juste ne pas effectuer l'action. Y a-t-il quelque chose que je doive changer dans mon code?

Répondre

1

Je suis confronté au même problème. S'il vous plaît se référer à ce poste dans Cant add text to webview text field with Espresso

Mon code fonctionne pour Android 7.1.1 simulateur, mais il échoue sur le simulateur Android 8.0 ainsi. Je l'ai résolu en faisant ce qui suit dans build.gradle.

1) Mettre à niveau la bibliothèque d'espresso. j'étais sur:

androidTestCompile 'com.android.support.test:runner:0.5' 
androidTestCompile 'com.android.support.test:rules:0.5' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' 
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') 

maintenant à:

androidTestCompile 'com.android.support.test:runner:1.0.0' 
androidTestCompile 'com.android.support.test:rules:1.0.0' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.0' 
androidTestCompile('com.android.support.test.espresso:espresso-contrib:3.0.0') 

2) Après avoir fait cela, votre application pourrait ne pas construire. Il pourrait dire qu'il ne peut pas trouver le test: coureur: Dans ce 1.0.0 cas, vous devez ajouter

repositories { 
    maven { url "https://maven.google.com" } 
} 

3) La question suivante, vous devrez peut-être résoudre est que cela pourrait se plaindre de « versions pour l'application (2x.xx) et l'application de test (2x.xx) diffèrent " J'ai donc ajouté ce qui suit dans le dégradé.

configurations.all { 
    resolutionStrategy.force 'com.android.support:support-annotations:2x.x.x' 
} 

4) En plus, vous devrez peut-être vous assurer que vous avez ajouté le Runner.

defaultConfig { 
     "android.support.test.runner.AndroidJUnitRunner" 
} 
+0

Merci pour mon travail. J'ai été dans l'ancienne version de l'espresso android pendant un certain temps. – Puff