Unable to scroll down to bottom of div with data loading dynamically



  • <div id="findingTblBody" class="tablebody" infinite-scroll-distance="2" 
    infinite-scroll="loadMoreData()" style="width: 819px;">
    

    I want to scroll to the bottom of div mentioned above. I am trying with this -

    do {
        driver.findElement(By.xpath("//div[@id='findingTblBody']")).sendKeys(Keys.PAGE_DOWN);
        Thread.sleep(6000);
        scroll_count++;
    } while(scroll_count

    I am receiving error as - org.openqa.selenium.WebDriverException: unknown error: cannot focus element

    How to scroll my web page up to that element & click?



  • Check below are the various methods to scroll your web page up & down:

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


Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2