How to scroll web page in Selenium Webdriver using java?

Scroll by given pixel offset
//To scroll down web page by 900 pixels In x(vertical) direction.  
  //You can y parameter to scroll page In horizontal direction.
  JavascriptExecutor javascript = (JavascriptExecutor) driver;
  javascript.executeScript("window.scrollBy(0,900)", "");    
  
  //To scroll up web page by 300 pixels In x(vertical) direction.
  javascript.executeScript("window.scrollBy(0,-300)", "");
Scroll down to bottom of page
//Scroll down to bottom of the page.
  JavascriptExecutor javascript = (JavascriptExecutor) driver;
  javascript.executeScript("window.scrollTo(0, document.body.scrollHeight)", "");  
Scroll to element
//Scroll till element.
JavascriptExecutor je = (JavascriptExecutor) driver;
je.executeScript("arguments[0].scrollIntoView(true);",driver.findElement(By.partialLinkText("About Yahoo")));
Scroll to element using Keys
Actions action = new Actions(dr);
        action.sendKeys(Keys.PAGE_DOWN);
        Thread.sleep(5000);
        action.click(driver.findElement(By.partialLinkText("About Yahoo"))).perform();
Actions action = new Actions(dr);
        action.sendKeys(Keys.PAGE_DOWN);
        Thread.sleep(5000);
        action.click(driver.findElement(By.partialLinkText("About Yahoo"))).perform();
Example:

 import java.util.concurrent.TimeUnit;  
 import org.openqa.selenium.By;  
 import org.openqa.selenium.JavascriptExecutor;  
 import org.openqa.selenium.Keys;  
 import org.openqa.selenium.WebDriver;  
 import org.openqa.selenium.WebElement;  
 import org.openqa.selenium.firefox.FirefoxDriver;  
 import org.openqa.selenium.interactions.Actions;  
 public class ScrollDownUp {  
   public static void main(String[] args) throws InterruptedException {  
     // WebDriver reference but Firefox object  
     WebDriver dr = new FirefoxDriver();  
     //Maximize browser window      
     dr.manage().window().maximize();  
     //Go to URL     
     dr.get("https://www.yahoo.com/");  
     //Set timeout     
     dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  
     //To scroll down web page by 800 pixels In x(vertical) direction.   
     //You can y parameter to scroll page In horizontal direction.  
     JavascriptExecutor javascript = (JavascriptExecutor) dr;  
     javascript.executeScript("window.scrollBy(0,1200)", "");  
     Thread.sleep(3000);//  
     //To scroll up web page by 300 pixels In x(vertical) direction.  
     javascript.executeScript("window.scrollBy(0,-300)", "");  
     Thread.sleep(5000);  
     //Scroll down to bottom of the page.  
     JavascriptExecutor jasct = (JavascriptExecutor) dr;  
     jasct.executeScript("window.scrollTo(0, document.body.scrollHeight)", "");  
     Thread.sleep(5000);  
     //Scroll till element.  
     JavascriptExecutor je = (JavascriptExecutor) dr;  
     je.executeScript("arguments[0].scrollIntoView(true);", dr.findElement(By.partialLinkText("Mail")));  
     Thread.sleep(5000);  
     // Scroll till to element by Keys  
     dr.findElement(By.partialLinkText("About Yahoo")).sendKeys(Keys.PAGE_DOWN);  
     Thread.sleep(3000);  
     dr.findElement(By.partialLinkText("Mail")).sendKeys(Keys.PAGE_UP);  
     Thread.sleep(5000);  
     // Scroll till to element by action   
     Actions action = new Actions(dr);  
     action.sendKeys(Keys.PAGE_DOWN);  
     action.click(dr.findElement(By.partialLinkText("About Yahoo"))).perform();  
     //close firefox browser   
     dr.quit();  
   }  
 }  




2 comments:

  1. Please explain . Cant we scroll without using javascript executor in selenium?

    ReplyDelete