From 678c9332eb990a78fe3926288ebc0ffe1bb44721 Mon Sep 17 00:00:00 2001 From: subramanya Date: Wed, 28 Aug 2024 10:36:24 +0200 Subject: [PATCH 1/2] Fix flutter scroll issue --- .../java_client/flutter/commands/ScrollParameter.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java b/src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java index 773ece810..33d06cb8e 100644 --- a/src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java +++ b/src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java @@ -18,7 +18,7 @@ @Setter public class ScrollParameter extends FlutterCommandParameter { private AppiumBy.FlutterBy scrollTo; - private WebElement scrollView; + private AppiumBy.FlutterBy scrollView; private ScrollDirection scrollDirection; private Integer delta; private Integer maxScrolls; @@ -56,13 +56,13 @@ public Map toJson() { params.put("finder", parseFlutterLocator(scrollTo)); Optional.ofNullable(scrollView) - .ifPresent(scrollView -> params.put("scrollView", scrollView)); + .ifPresent(scrollView -> params.put("scrollView", parseFlutterLocator(scrollView))); Optional.ofNullable(delta) .ifPresent(delta -> params.put("delta", delta)); Optional.ofNullable(maxScrolls) - .ifPresent(maxScrolls -> params.put("delta", maxScrolls)); + .ifPresent(maxScrolls -> params.put("maxScrolls", maxScrolls)); Optional.ofNullable(settleBetweenScrollsTimeout) - .ifPresent(timeout -> params.put("delta", settleBetweenScrollsTimeout)); + .ifPresent(timeout -> params.put("settleBetweenScrollsTimeout", settleBetweenScrollsTimeout)); Optional.ofNullable(scrollDirection) .ifPresent(direction -> params.put("scrollDirection", direction.getDirection())); Optional.ofNullable(dragDuration) From 396122b2984facfad925d10cbd444b46024f6c29 Mon Sep 17 00:00:00 2001 From: subramanya Date: Thu, 29 Aug 2024 10:21:23 +0200 Subject: [PATCH 2/2] Add test with scroll parameters --- .../java_client/android/CommandTest.java | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java b/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java index d8f587e52..cc86e670b 100644 --- a/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java +++ b/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java @@ -12,7 +12,10 @@ import org.openqa.selenium.WebElement; import java.io.IOException; +import java.time.Duration; +import static io.appium.java_client.flutter.commands.ScrollParameter.ScrollDirection.UP; +import static java.lang.Boolean.parseBoolean; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -52,18 +55,36 @@ void testScrollTillVisibleCommand() { openScreen("Vertical Swiping"); WebElement firstElement = driver.scrollTillVisible(new ScrollParameter(AppiumBy.flutterText("Java"))); - assertTrue(Boolean.parseBoolean(firstElement.getAttribute("displayed"))); + assertTrue(parseBoolean(firstElement.getAttribute("displayed"))); WebElement lastElement = driver.scrollTillVisible(new ScrollParameter(AppiumBy.flutterText("Protractor"))); - assertTrue(Boolean.parseBoolean(lastElement.getAttribute("displayed"))); - assertFalse(Boolean.parseBoolean(firstElement.getAttribute("displayed"))); + assertTrue(parseBoolean(lastElement.getAttribute("displayed"))); + assertFalse(parseBoolean(firstElement.getAttribute("displayed"))); firstElement = driver.scrollTillVisible( - new ScrollParameter(AppiumBy.flutterText("Java"), - ScrollParameter.ScrollDirection.UP) + new ScrollParameter(AppiumBy.flutterText("Java"), UP) ); - assertTrue(Boolean.parseBoolean(firstElement.getAttribute("displayed"))); - assertFalse(Boolean.parseBoolean(lastElement.getAttribute("displayed"))); + assertTrue(parseBoolean(firstElement.getAttribute("displayed"))); + assertFalse(parseBoolean(lastElement.getAttribute("displayed"))); + } + + @Test + void testScrollTillVisibleWithScrollParametersCommand() { + WebElement loginButton = driver.findElement(BaseFlutterTest.LOGIN_BUTTON); + loginButton.click(); + openScreen("Vertical Swiping"); + + ScrollParameter scrollParameter = new ScrollParameter(AppiumBy.flutterText("Protractor")); + scrollParameter + .setScrollView(AppiumBy.flutterType("Scrollable")) + .setMaxScrolls(30) + .setDelta(30) + // Drag duration currently works when the value is greater than 34 secs + .setDragDuration(Duration.ofMillis(35000)) + .setSettleBetweenScrollsTimeout(10); + + WebElement firstElement = driver.scrollTillVisible(scrollParameter); + assertTrue(parseBoolean(firstElement.getAttribute("displayed"))); } @Test