Wer mit Selenium Touchgesten simulieren will (hier: Pull-to-Refresh 🙂), der benötigt zuerst mal einen Browser, der Touch unterstützt:
1 2 3 4 5 6 7 8 9 10 |
Map<String, Object> someDeviceMetrics = ...; // see link Map<String, Object> emulation = new HashMap<>(); emulation.put("deviceMetrics", someDeviceMetrics); emulation.put("userAgent", "<some user agent>"); ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("mobileEmulation", emulation); WebDriver driver = new RemoteWebDriver(SELENIUM_URL, options); |
Der Rest ist dann einfach:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Browser implements HasTouchScreen, ... { // ... @Override public TouchScreen getTouch() {{ return driver instanceof HasTouchScreen ? ((HasTouchScreen) driver).getTouch() : new RemoteTouchScreen(new RemoteExecuteMethod((RemoteWebDriver) driver)); } } // ... // offsetX/offsetY = the distance to be panned new TouchActions(getBrowser()) .flick(target, offsetX, offsetY, 200) .perform(); |
(wenn man davon absieht, dass der vierte Parameter laut Sourcecode 0, 1 oder 2 sein sollte, nicht 200 – getestet mit selenium-java 3.9.1)