Swipe Gesten mit Selenium auf Android Geräten

  • von

Swipe Gesten für Web Anwendungen auf Android Geräten zu testen ist nicht so einfach. Aber es ist möglich, man muss nur ein paar Sachen wissen:

  • Man muss die TouchActions Klasse auf dem Appium Client verwenden
  • Man muss die Koordinaten des nativen Kontextes verwenden, die Unterscheiden sich von den Koordinaten des Web Kontextes

Möchte man einfach nur von links nach rechts wischen ohne über den Screen wischen, funktioniert das folgendermaßen:

import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;

import static io.appium.java_client.touch.WaitOptions.waitOptions;
import static io.appium.java_client.touch.offset.PointOption.point;
import static java.time.Duration.ofMillis;

public class Test {

    public void swipeLeftToRight(AndroidDriver<?> androidDriver) {

        var currentContext = androidDriver.getContext();

        // We need to switch to the native context to get the real windows size
        androidDriver.context("NATIVE_APP");
        var windowsSize = androidDriver.manage().window().getSize();

        // Avoid starting and ending directly on the edge of the screen
        int border = 50;

        int startX =  border;
        int startY = (windowsSize.height / 2);

        int endX = windowsSize.width - border;
        int endY = startY;

        new TouchAction(androidDriver)
                .press(point(startX, startY))
                .waitAction(waitOptions(ofMillis(2000)))
                .moveTo(point(endX, endY))
                .release()
                .perform();

        // Switch back to the web context
        androidDriver.context(currentContext);
    }
}

Möchte man genauer steuern über welches WebElement man swipt, muss man von den Web Koordinaten in Native Koordinaten umrechnen. Dies hängt von der Position eures WebViews auf dem Screen und dem Verhältnis native Größe des WebViews und innere Größe im WebContext ab.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.