August 27, 2020

How does Selenium handle inner scroll?

Some of WebElements is not recognized by WebDriver, WebDriver fails to find the element which is not visible in the browser's visible area for more selenium training.

In order to make the WebElement viewable by WebDriver, We need to make that element to visible in the browser's view to do scroll down on particular div!

How can I perform my action(scroll down and click) on a particular area of my webpage. I tried a lot, doesn't help me.

Please help me resolve my issue.

Scroll Down:

import org.openqa.selenium.JavascriptExecutor;WebDriver driver = new FirefoxDriver();JavascriptExecutor jse = (JavascriptExecutor)driver;jse.executeScript("scroll(0, 250)"); //y value '250' can be altered

Scroll up:

JavascriptExecutor jse = (JavascriptExecutor)driver;jse.executeScript("scroll(250, 0)"); //x value '250' can be altered

Scroll bottom of the Page:

JavascriptExecutor jse = (JavascriptExecutor)driver;jse.executeScript("window.scrollTo(0,Math.max(document.documentElement.scrollHeight,document.body.scrollHeight,document.documentElement.clientHeight));");

Actions actions = new Actions(driver);actions.keyDown(Keys.CONTROL).sendKeys(Keys.END).perform();Full scroll to bottom in slow motion:for (int second = 0;; second++) { if(second >=60){ break; } ((JavascriptExecutor) driver).executeScript("window.scrollBy(0,400)", ""); //y axis value is set to'400', which can be altered Thread.sleep(3000);}

JavascriptExecutor jse = (JavascriptExecutor)driver;for (int second = 0;; second++) { if(second >=60){ break; } jse.executeScript("window.scrollBy(0,800)", ""); //y value '800' can be altered Thread.sleep(3000);}

Scroll automatically to your WebElement:

Point hoverItem =driver.findElement(By.xpath("Value")).getLocation();((JavascriptExecutor)driver).executeScript("return window.title;"); Thread.sleep(6000);((JavascriptExecutor)driver).executeScript("window.scrollBy(0,"+(hoverItem.getY())+");"); // Adjust your page view by making changes right over here (hoverItem.getY()-400)

((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView();", driver.findElement(By.xpath("Value')]")));

WebElement element = driver.findElement(By.xpath("Value"));Coordinates coordinate = ((Locatable)element).getCoordinates(); coordinate.onPage(); coordinate.inViewPort();

One can go for Selenium online training to clear all doubts and queries on Selenium testing course online.