Nils Rudolph
Dem Ingenör ist nichts zu schwör!
Über mich

Swipe Gesten mit Selenium auf Android Geräten

12. Februar 2021

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:

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.