How the scrollTo() and scrollToExact() methods are working?

@Rjimms, I just want to know , Is it possible to assert certain web element is present after one scroll.

Bhaskar the concept of scroll is same as manuall scroll

U select one point of screen swipe u r finger to another point and screen scrolls and new element appears right similarly
I am scrolling from element with contect-desc property “Sliders” to element with content-desc property “Alert Controller”, once this action is done new elements comes into picture if u want to scroll further u need to pull a loop with terminating condition scroll and findElement, if element is found stop scroll (by terminating loop) else continue action…

This is a neat solution and working very well. Thank you!

Hi Rjimms,

This code works fine on both Android and iOS. To make it run on iOS, one has to club XPath with visible property.

public static void iOSSwipe(String xPath) {
do {
try {
driver.findElement(By.xpath(xPath)).click();
break;

		} catch (Exception NoSuchElementException) {
			Dimension dimensions = driver.manage().window().getSize();
			Double screenHeightStart = dimensions.getHeight() * 0.5;
			int scrollStart = screenHeightStart.intValue();
			Double screenHeightEnd = dimensions.getHeight() * 0.2;
			int scrollEnd = screenHeightEnd.intValue();
			driver.swipe(0, scrollStart, 0, scrollEnd, 2000);	
		}
	} while (true);
}

Example Call statement - iOSSwipe("//*[@label=‘Gift Cards’ and @visible=‘true’]");

Thanks

The problem I see with this though, is what happens when your object lands above, rather than below? Or more over, what if you don’t know if it’s above or below? What happens when you have thousands of records on that table? It seems like there should be a more effective method to ‘jump’ to an object, if we’re able to supply the xpath or ID.

Scroll to text :
MobileElement radioGroup = (MobileElement) wd

.findElementByAndroidUIAutomator(“new UiScrollable(new UiSelector()”

  • “.resourceId(”+listview_id+")).scrollIntoView("

  • “new UiSelector().text(”+text+"));");

radioGroup.click();

This link will help you : https://www.youtube.com/watch?v=bT3tqaLNn-Y

1 Like

I am unable to use scrollTo(), have this method been removed from 4.1.0 version?

@Appium_Master: Could you please share me the code what you have showed in above video.
Also there is no method inside driver.scrollTo() [See attachment screenshot] …could you please let me know which version of libraries i need to use.
Also my current issue is i need to scroll vertically to find button and need to click on it. Here scroll should not be dependable based on its position.Please suggest!
Currently i’m using java-client latest 5.0 beta version.

Hi Chaitu,

Trying using swipe function. I think scroll is deprecated in the latest release.

@Appium_Master

Could you clarify how to do scroll down in Windows Universal app.?

Config Setup: Appium 1.6.0 using node
Remote Webdriver
Windows universal app

Tried with JavascriptExecutor, MoveToElement, scrollTo, … nothing works.Please clarify. Thanks

This awesome Appium document resolved my issues with iOS scrolling and swiping and using both to position to a specific element: https://appium.readthedocs.io/en/stable/en/writing-running-appium/touch-actions/

Sujata,
This code will become infinite loop if that object doesn’t exist.

Hi i need scroll down the app screen can any one help please

can i have code snippet

@chinna_chinna choose any - Swipe/Scroll best practice with Java-Client 5

What is a good scroll down code for me to use for my code?

    //Clicks "Account Setting"
    driver.findElement(By.id(editprofile)).click();

    //Scroll down
    
   //Bottom of the screen
    driver.findElement(By.id(changePassword)).click();

Appium Version 1.2.3 (1.2.3)
Selenium 3.5.3
Java Client 5.0.3

Thanks in advance

hi sir i am unable call the swipe method…

i.e, driver.swipe();

it is not showing any annotations please help me on this

Hi, Scrolling mobile app page by TouchAction working fine.
using longPress(startx,starty).moveTo(endx,endy) methods.

Before setup : Enable "Pointer location " in Developer options to get Location of your mobile app.

Code part

System.out.println("Page scrolling down ");
Dimension dim = driver.manage().window().getSize();
int height = dim.getHeight();
int width = dim.getWidth();
int x = height/2;
int starty1 = (int)(height * 0.80);
int endy1 = (int)(height * 0.20);

TouchAction scrollto = new TouchAction((MobileDriver) driver).longPress(x,starty1).moveTo(0, endy1).release();
scrollto.perform();
Thread.sleep(5000);

		System.out.println("Page scrolling completed");
		Thread.sleep(5000);
		
		System.out.println("folder clicking ");
		WebElement Autobkupfile =	driver.findElement(MobileBy.name("Folder Name "));
		if(Autobkupfile.equals(Autobkupfile))
		{
			Autobkupfile.click();
		}	
		Thread.sleep(5000);

Hi,

You can try both TouchActions and UIScrollable (scrollIntoView(), getChildByText(), getChildByDescription() methods in Appium. You can check examples in this link - Appium Scroll Examples

it works for me, hope it can help you
public void mobileScrollDownElementIOS(String fieldName) {
RemoteWebElement element = (RemoteWebElement)driver().findElement(By.className(“XCUIElementTypeOther”));
String scrollElement = element.getId();
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put(“element”, scrollElement);
scrollObject.put(“direction”, “down”);
scrollObject.put(“xpath”, fieldName);
driver().executeScript(“mobile:scroll”, scrollObject);
}