Klicken Sie nach Grenzen / Koordinaten

Ich weiß, es ist möglich für Espresso zu klicken, um Grenzen, wie UiAutomator tut . (X und y-Koordinaten) Ich habe die Dokumentation gelesen, aber ich kann es nicht scheinen. Jede Hilfe wird geschätzt. Vielen Dank

Bearbeiten
Ich habe diesen Link gefunden , aber keine Beispiele, wie man es benutzt, Mein Hauptanliegen ist das UiController oder wie man es benutzt.

  • Android ImageView Skala kleineres Bild auf Breite mit flexibler Höhe ohne Zuschneiden oder Verzerrung
  • Wie kann ich sehen, wie viel Speicher meine App aus seinem VM Budget verwendet?
  • Android: Problem mit ListViews und CheckBoxen
  • Wie bekomme ich Währungssymbol nach Währungsname?
  • Legen Sie Vollbild auf onCreate
  • Android - automatische Überlagerung berühren / hervorgehobenen Bildknopfzustände
  • Gson Deserialisierung von verschachtelten Objekten mit InstanceCreator
  • Wie man Visualizer während der Aufnahme von Audio in Android zu tun
  • Ich bekomme ein Datenbank-Objekt nicht geschlossen Exception in SQLite (Android), aber ich bin explizit meine Datenbank schließen ... Hilfe?
  • Facebook - "Kann keine Benutzer nach ihrem Benutzernamen" abfragen
  • Ist es möglich, einen ObservableField an einen anderen zu binden?
  • Android - Wie positioniere ich den Bildschirm?
  • 2 Solutions collect form web for “Klicken Sie nach Grenzen / Koordinaten”

    Espresso hat die GeneralClickAction , dies ist die zugrunde liegende Implementierung von ViewActions click() , doubleClick() und longClick() .

    Der Konstruktor der GeneralClickAction nimmt einen CoordinatesProvider als zweites Argument an. So ist die Grundidee, einen statischen ViewAction Getter zu erstellen, der einen benutzerdefinierten CoordinatesProvider bietet. Etwas wie das:

     public static ViewAction clickXY(final int x, final int y){ return new GeneralClickAction( Tap.SINGLE, new CoordinatesProvider() { @Override public float[] calculateCoordinates(View view) { final int[] screenPos = new int[2]; view.getLocationOnScreen(screenPos); final float screenX = screenPos[0] + x; final float screenY = screenPos[1] + y; float[] coordinates = {screenX, screenY}; return coordinates; } }, Press.FINGER); } 

    Ein allgemeiner Ratschlag mit Espresso: anstatt nach Dokumentation zu suchen (es gibt praktisch keine), schau dir den Quellcode an. Espresso ist Open Source und der Quellcode selbst ist von guter Qualität.

    @ Haffax's Antwort ist großartig und funktioniert gut.

    Wenn Sie jedoch in einen bestimmten Teil einer Ansicht klicken möchten, der sich von Bildschirm zu Bildschirm ändern kann, kann es sinnvoll sein, auf der Grundlage von Prozente (oder Verhältnissen) zu klicken, da sogar die dp-Nummern möglicherweise nicht über alle Bildschirme stabil sind. Also habe ich es leicht gemacht:

      public static ViewAction clickPercent(final float pctX, final float pctY){ return new GeneralClickAction( Tap.SINGLE, new CoordinatesProvider() { @Override public float[] calculateCoordinates(View view) { final int[] screenPos = new int[2]; view.getLocationOnScreen(screenPos); int w = view.getWidth(); int h = view.getHeight(); float x = w * pctX; float y = h * pctY; final float screenX = screenPos[0] + x; final float screenY = screenPos[1] + y; float[] coordinates = {screenX, screenY}; return coordinates; } }, Press.FINGER); } 

    Ich dachte, ich würde es hier teilen, damit andere profitieren können.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.