Das klicken auf die Taste, die auf der zweiten Aktivität got error performing 'Klick' oder 'Blättern' on view
Klicken auf eine Schaltfläche im Espresso-test-problem. Sagen wir, ich habe zwei Aktivitäten "Activity1" und "Activity2". Klicken Sie auf ein Dialogfenster Schaltfläche " OK " in Activity1 beginnt Activity2, wo der Knopf in Activity2 können nicht angeklickt werden.
//The current activity in testing
//.....
onView(withText(R.string.dialog_btn_ok)).perform(click()); //go to the second activity
//The button on the second activity
onView(withId(R.id.btnMP)).check(matches(isDisplayed())); //this is ok
onView(withId(R.id.btnMP)).perform(click()); //got error here
android.Unterstützung.test.espresso.PerformException: Error performing
'Klick' auf Sicht 'mit der id: ..........Verursacht durch: java.lang.RuntimeException: Action wird nicht ausgeführt
da die Ziel-Ansicht nicht übereinstimmen, eine oder mehrere der folgenden
Einschränkungen: mindestens 90 Prozent der anzeigen-Bereich angezeigt wird
der Anwender. Ziel anzeigen: "Taste{id=2131296390, res-name=btnMP,
visibility=VISIBLE, width=652, height=160, hat focus=false,
hat-justierbares=true, hat-window-Fokus=true, ist-clickable=true,
ist aktiviert=true, wird-fokussiert auf "false" ist-justierbares=true,
ist-layout-requested=false, ist-selected=false,
root-ist-layout-requested=false, hat-input-Anschluss=false, x=20.0,
y=-16.0, text=Parameter Ändern, input type=0, ime-target=false,
hat-links=false}"
Wenn ich diese mit perform(scrollTo())
eine andere Fehlermeldung angezeigt wird.
//The button on the second activity
onView(withId(R.id.btnMP)).check(matches(isDisplayed())); //this is ok
onView(withId(R.id.btnMP)).perform(scrollTo(), click()); //got error here
android.Unterstützung.test.espresso.PerformException: Error performing
scrollen Sie zu' Ansicht 'mit der id ....Verursacht durch: java.lang.RuntimeException: Action wird nicht ausgeführt werden, weil die
target-Ansicht nicht übereinstimmen, eine oder mehrere der folgenden Einschränkungen:
(Ansicht effektive Sichtbarkeit=SICHTBAR und ist Nachkomme von a: (ist
zuweisbare aus: class android.- widget.ScrollView oder ist
zuweisbare aus: class android.- widget.HorizontalScrollView))
Ziel anzeigen: "Taste{id=2131296390, res-name=btnMP,
visibility=VISIBLE, width=652, height=160, hat focus=false,
hat-justierbares=true, hat-window-Fokus=true, ist-clickable=true,
ist aktiviert=true, wird-fokussiert auf "false" ist-justierbares=true,
ist-layout-requested=false, ist-selected=false,
root-ist-layout-requested=false, hat-input-Anschluss=false, x=20.0,
y=-16.0, text=Parameter Ändern, input type=0, ime-target=false,
hat-links=false}" bei
- Wie die Fehlermeldung sagt, wahrscheinlich ist es nicht zeigen, zumindest die 90% der gesamten view-Bereich. Versuchen Sie,
isCompletelyDisplayed()
stattisDisplayed()
oder noch besser, versuchen Sie zu verwendenisDisplayingAtLeast()
vorbei 90 Prozent. - Ja,
isCompletelyDisplayed()
ist fehlgeschlagen mit dem FehlerDefaultFailureHandler$AssertionFailedWithCauseError: 'at least 100 percent of the view's area is displayed to the user.' doesn't match the selected view.
Was kann ich tun dafür? - Haben Sie deaktiviert die Animationen auf dem Gerät testen? Werden Sie sicher, dass Sie deaktivieren: gehen Sie zu Einstellungen > die Entwickler-Optionen und deaktivieren Sie "Window animation scale", "Transition animation scale" und "Animator Dauer-Skala"
- In der Tat
scrollTo()
sollte das problem lösen, richtig? - Haben Sie das problem gelöst durch deaktivieren Animationen? Über
scollTo()
ich bin mir nicht sicher, das problem ist das gleiche. - Ich deaktiviert alle animation scale-Einstellungen, aber immer noch den Fehler
android.support.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 'at least 100 percent of the view's area is displayed to the user.' doesn't match the selected view.
- Dies bedeutet, dass Ihre Sicht nicht völlig sichtbar. Dieses ist Weg, es kann nicht angeklickt werden
- Aber ich sehe die Schaltfläche im Bildschirm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung ist, erstellen Sie Ihre benutzerdefinierte GeneralClickAction mit Blick auf Sichtbarkeit, die Sie wollen, klicken Sie auf weniger als Espresso ist GeneralClickAction erfordert. Derzeit ist die minimale Sichtbarkeit Wert 90% - siehe code hier der Linie 60. Legen Sie es auf 80% oder weniger. Kopieren Sie einfach die ganze Klasse umbenennen Sie und ändern Sie den Wert dieser Methode zu 80
isDisplayingAtLeast(80)
. Dann erstellen Sie Ihre klicken Sie auf Aktion, die verwendet Ihre benutzerdefinierten GeneralClickAction:Aber ich würde lieber reparieren das layout der Aktivität, wenn möglich, zu vermeiden, die Schaffung von Abhilfe für den button Sichtbarkeit.
import android.support.test.espresso.core.deps.guava.base.Optional;
wenn der compiler meckertScheint Ihre Ansicht mit der id
R.id.btnMP
ist nicht sichtbar auf dem Bildschirm, so erhalten Sie den ersten Fehler. Sie versuchen, dieses Problem beheben, indemscrollTo()
aber Ihre Ansicht nicht im ScrollView. So wie Ihre Tätigkeit organisiert? Wenn Sie mitRecyclerView
(zum Beispiel) sollten Sie verwenden spezielle version von scrollTo - http://developer.android.com/reference/android/support/test/espresso/contrib/RecyclerViewActions.html und so weiter. Also erstmal schauen, wo Ihre anzeigen gehostet wird, und dann wird es auch klar sein, wie scrollen, um es.LinearLayout > FrameLayout > LinearLayout > LinearLayout > Button
. Während des Tests habe ich die Schaltfläche im Bildschirm und dann den test beendet und gescheitert.