Thursday, January 16, 2014

Page Scroll using Selenium WebDriver

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));");

 (or)

 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 value '400' can be altered
             Thread.sleep(3000);
 }

 (or)

 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)

 (or)

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

 (or)

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

No comments:

Post a Comment