2015-04-22 5 views
20

bekam ich einen Fehler, wenn ich android Espresso Test ausführen:PerformException: Fehler performing 'Klick'

com.google.android.apps.common.testing.ui.espresso.PerformException: Fehler performing ‚Single Klicken Sie auf "Ansicht" mit der ID: is < 2131034173> '.

Mein Code ist einfach:

onView(withId(R.id.btn)).perform(click()); 

Aber es gibt keinen Fehler mit diesem Code:

onView(withId(R.id.btn)).check(matches(isDisplayed())); 

Ich kann nicht die Ursache finden, warum es geschehen.

+2

Bitte buchen Sie die komplette Stack-Trace. Das erste Bit der Fehlermeldung ist nicht genug. Mit PerformExceptions sind die interessanten Bits im Abschnitt "Caused by" enthalten, zeigt die Ausnahme, die ursprünglich den Klick fehlgeschlagen. – haffax

+1

@Winton haben Sie eine Lösung für dieses Problem gefunden? Ich laufe durch das gleiche Problem – Gaurav

+0

Dies kann passieren, wenn Sie eine Charge von Tests ausführen. Versuchen Sie, den gleichen Test erneut auszuführen (nur diesen Test), und sehen Sie, ob Sie immer noch das gleiche Problem haben. – Henry

Antwort

20

Versuchen Sie sicherzustellen, dass die Bildschirmtastatur nicht angezeigt wird. Es kann einfach mit dem closeSoftKeyboard ViewAction geschlossen werden.

Darüber hinaus sicherstellen, dass Systemanimationen deaktiviert sind. Unter Einstellungen ->Entwicklung Optionen deaktivieren folgende:

  • Fenster Animation Skala
  • Transition-Animationsgröße
  • Animator Dauer Skala

Auch dies könnte durch ANR verursacht werden Dialoge von anderen Apps.

Es wurde auch ein Problem gemeldet here.

+0

Danke. Ich hatte meinen Code geändert und alle Skalierungen deaktiviert, aber der Fehler ist immer noch vorhanden. Während des Testlaufs gibt es keine ANR-Dialoge. –

+0

Große Antwort. Espresso.closeSoftKeyboard() speichern Sie meinen Tag ... als mein zweiter Test fehlgeschlagen (unabhängig von der Reihenfolge), wenn sowohl der erste als auch der zweite Test eine Schaltfläche zum Klicken hat .. – Elye

48

Der Trick besteht darin, die vollständige Stack-Trace des Fehlers zu lesen. In der Mitte gibt es einige entscheidende Informationen wie diese:

Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: 
at least 90 percent of the view's area is displayed to the user. 
Target view: "ImageView{id=2131492903, res-name=button_hamburger, desc=opens the side drawer, visibility=VISIBLE, width=64, height=64, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=6.0, y=6.0}" 

, die den Fehler im Detail erklärt.

+0

Danke! In meinem Fall ist es wegen NPE. Es ist seltsam, da ich erwarte, dass meine Variablen instanziiert werden. Es scheint, dass ich den gesamten Test ausführen muss, damit es die Aktivität/das Fragment initialisiert, bevor es ausgeführt wird. Ich verwende eine einzige Testmethode (die eine einzelne User Story beschreibt). Ich schlage vor, google, um die Play-Taste neben dem Test-Modus zu entfernen, wie in diesem Fall ist es nutzlos, ich denke, es ist auch nutzlos in den meisten Fällen. :/ –

+0

Danke! In meinem Fall konnte ich die Aktivität, die im Test gestartet werden soll, nicht zur Manifestdatei hinzufügen. –

+0

Es war genau mein Fall, Danke! –

12

Ich hatte das gleiche Problem, weil die weiche Tastatur das Element überlappte. Ich habe scrollTo() gefolgt von click() benutzt, um das Problem zu lösen.

onView(withId(R.id.btn)) 
    .perform(scrollTo()) 
    .perform(click()); 

Wenn oben nicht funktioniert, versuchen die Zugabe nach der ersten:

onView(withId(R.id.myEditText)).perform(closeSoftKeyboard()); 
2

Wenn die Ansicht während der Prüfung nicht sichtbar ist ... verwenden perform(scrollTo()) ... Es wird scrollen und Aktion klicken, wird perfrom.

Beispiel: -

onView(withId(R.id.btn)).perform(scrollTo()).perform(click()); 
-2

Die error von UI Gewindesatz verursacht wurde. Bitte überprüfen Sie Ihre target Activity code, insbesondere die setUp oder init Funktion.

Ich habe die gleiche error getroffen, es gibt eine falsche listener in UI-Thread, die immer aufgerufen werden. Wenn ich die listener entferne, könnte die error behoben werden.

1

Ich habe das gleiche Problem, aber die Ursache ist:

Caused by: android.support.test.espresso.AppNotIdleException: Looped for 3713 iterations over 60 SECONDS. The following Idle Conditions failed . 

Ich weiß nicht, wo das Problem ist, wie es auf den Button nicht anklicken, die auf die nächste Aktivität gehen, aber es sieht aus wie es forschen noch für die Taste nach

Verwandte Themen