Recherche…


Introduction

Cette rubrique proposera plusieurs approches pour effectuer le défilement avec le selenium

Défilement avec Python

1. Faire défiler jusqu'à l'élément cible (bouton "BROWSE TEMPLATES" en bas de la page) avec Actions

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get('http://www.w3schools.com/')
target = driver.find_element_by_link_text('BROWSE TEMPLATES')
actions = ActionChains(driver)
actions.move_to_element(target)
actions.perform()

2. Faire défiler jusqu'à l'élément cible (bouton "BROWSE TEMPLATES" au bas de la page) avec JavaScript

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://www.w3schools.com/')
target = driver.find_element_by_link_text('BROWSE TEMPLATES')
driver.execute_script('arguments[0].scrollIntoView(true);', target)

3. Faire défiler jusqu'à l'élément cible (bouton "BROWSE TEMPLATES" en bas de la page) avec la méthode intégrée

from selenium import webdriver

    driver = webdriver.Chrome()
    driver.get('http://www.w3schools.com/')
    target = driver.find_element_by_link_text('BROWSE TEMPLATES')
    target.location_once_scrolled_into_view

Notez que location_once_scrolled_into_view renvoie également les coordonnées x , y de l'élément après le défilement

4. Faire défiler vers le bas de la page avec les Keys

from selenium import webdriver
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Chrome()
driver.get('http://www.w3schools.com/')
driver.find_element_by_tag_name('body').send_keys(Keys.END) # Use send_keys(Keys.HOME) to scroll up to the top of page

Notez que send_keys(Keys.DOWN) / send_keys(Keys.UP) et send_keys(Keys.PAGE_DOWN) / send_keys(Keys.PAGE_UP) peuvent également être utilisés pour le défilement.

Défilement différent utilisant java de différentes manières

Ci-dessous donne la solution peut également être utilisé dans un autre langage de programmation pris en charge avec quelques modifications de syntaxe


  1. Pour faire défiler la page / section / division dans la page Web alors qu'il existe une barre de défilement personnalisée (pas de défilement du navigateur). Cliquez ici Pour la démonstration et la vérification, la barre de défilement a son élément indépendant.

Dans le code ci-dessous, passez votre élément de barre de défilement et demandez des points de défilement.

    public static boolean scroll_Page(WebElement webelement, int scrollPoints)
    {
    try
    {
        System.out.println("---------------- Started - scroll_Page ----------------");
        driver = ExecutionSetup.getDriver();
        dragger = new Actions(driver);

        // drag downwards
        int numberOfPixelsToDragTheScrollbarDown = 10;
        for (int i = 10; i < scrollPoints; i = i + numberOfPixelsToDragTheScrollbarDown)
        {
            dragger.moveToElement(webelement).clickAndHold().moveByOffset(0, numberOfPixelsToDragTheScrollbarDown).release(webelement).build().perform();
        }
        Thread.sleep(500);
        System.out.println("---------------- Ending - scroll_Page ----------------");
        return true;
    }
    catch (Exception e)
    {
        System.out.println("---------------- scroll is unsucessfully done in scroll_Page ----------------");
        e.printStackTrace();
        return false;
    }
  }

  1. Pour faire défiler la page / section / division dans la page Web alors qu'il existe une barre de défilement personnalisée (pas de défilement du navigateur). Cliquez ici Pour la démonstration et la vérification, la barre de défilement a son élément indépendant.

Dans le code ci-dessous, passez votre élément de barre de défilement et demandez des points de défilement.

public static boolean scroll_Page_Up(WebElement webelement, int scrollPoints)
{
    try
    {
        System.out.println("---------------- Started - scroll_Page_Up ----------------");
        driver = ExecutionSetup.getDriver();
        dragger = new Actions(driver);
        // drag upwards
        int numberOfPixelsToDragTheScrollbarUp = -10;
        for (int i = scrollPoints; i > 10; i = i + numberOfPixelsToDragTheScrollbarUp)
        {
            dragger.moveToElement(webelement).clickAndHold().moveByOffset(0, numberOfPixelsToDragTheScrollbarUp).release(webelement).build().perform();
        }
        System.out.println("---------------- Ending - scroll_Page_Up ----------------");
        return true;
    }
    catch (Exception e)
    {
        System.out.println("---------------- scroll is unsucessfully done in scroll_Page_Up----------------");
        e.printStackTrace();
        return false;
    }
}

  1. Pour faire défiler vers le bas lorsque plusieurs navigateurs font défiler (navigateur intégré) et que vous souhaitez faire défiler la page avec la touche Bas . Cliquez ici pour la démonstration

Dans le code donné ci-dessous, passez votre élément de zone de défilement tel que <div> et exigez une touche vers le bas.

 public static boolean pageDown_New(WebElement webeScrollArea, int iLoopCount)
 {
    try
    {
        System.out.println("---------------- Started - pageDown_New ----------------");
        driver = ExecutionSetup.getDriver();
        dragger = new Actions(driver);

        for (int i = 0; i <= iLoopCount; i++)
        {
            dragger.moveToElement(webeScrollArea).click().sendKeys(Keys.PAGE_DOWN).build().perform();
        }
        System.out.println"---------------- Ending - pageDown_New ----------------");
        return true;
    }
    catch (Exception e)
    {
        System.out.println("---------------- Not able to do page down ----------------");
        return false;
    }
}

  1. Pour faire défiler vers le haut lorsque plusieurs navigateurs font défiler (navigateur intégré) et que vous souhaitez faire défiler vers le haut avec la touche Page UP . Cliquez ici pour la démonstration

Dans le code donné ci-dessous, passez votre élément de zone de défilement tel que <div> et exigez une clé de page précédente.

public static boolean pageUp_New(WebElement webeScrollArea, int iLoopCount)
{
    try
    {
        System.out.println("---------------- Started - pageUp_New ----------------");
        driver = ExecutionSetup.getDriver();
        dragger = new Actions(driver);

        for (int i = 0; i <= iLoopCount; i++)
        {
            dragger.moveToElement(webeScrollArea).click().sendKeys(Keys.PAGE_UP).build().perform();
        }
        System.out.println("---------------- Ending - pageUp_New ----------------");
        return true;
    }
    catch (Exception e)
    {
        System.out.println("---------------- Not able to do page up ----------------");
        return false;
    }
}

  1. Pour faire défiler vers le bas lorsque plusieurs navigateurs défilent (navigateur intégré) et que vous souhaitez faire défiler la liste avec la touche flèche vers le bas uniquement . Cliquez ici pour la démonstration

Dans le code ci-dessous, passez votre élément de zone de défilement comme <div> et nécessitez une touche bas.

public static boolean scrollDown_Keys(WebElement webeScrollArea, int iLoopCount)
{
    try
    {
        System.out.println("---------------- Started - scrollDown_Keys ----------------");
        driver = ExecutionSetup.getDriver();
        dragger = new Actions(driver);

        for (int i = 0; i <= iLoopCount; i++)
        {
            dragger.moveToElement(webeScrollArea).click().sendKeys(Keys.DOWN).build().perform();
        }
        System.out.println("---------------- Ending - scrollDown_Keys ----------------");
        return true;
    }
    catch (Exception e)
    {
        System.out.println("---------------- Not able to do scroll down with keys----------------");
        return false;
    }
}

  1. Pour faire défiler vers le haut lorsque plusieurs navigateurs défilent (navigateur intégré) et que vous souhaitez faire défiler vers le haut avec une seule flèche vers le haut . Cliquez ici pour la démonstration

Dans le code ci-dessous, passez votre élément de zone de défilement comme <div> et nécessitez la touche Haut.

public static boolean scrollUp_Keys(WebElement webeScrollArea, int iLoopCount)
{
    try
    {
        System.out.println("---------------- Started - scrollUp_Keys ----------------");
        driver = ExecutionSetup.getDriver();
        dragger = new Actions(driver);

        for (int i = 0; i <= iLoopCount; i++)
        {
            dragger.moveToElement(webeScrollArea).click().sendKeys(Keys.UP).build().perform();
        }
        System.out.println("---------------- Ending - scrollUp_Keys ----------------");
        return true;
    }
    catch (Exception e)
    {
        System.out.println("---------------- Not able to do scroll up with keys----------------");
        return false;
    }
}

  1. Pour faire défiler vers le haut / bas lorsque le navigateur fait défiler (navigateur intégré) et que vous souhaitez faire défiler vers le haut / bas avec un point fixe uniquement . Cliquez ici pour la démonstration

En dessous du code donné, passez votre point de défilement. Positif signifie vers le bas et négatif signifie défiler vers le haut.

public static boolean scroll_without_WebE(int scrollPoint)
{
    JavascriptExecutor jse;
    try
    {
        System.out.println("---------------- Started - scroll_without_WebE ----------------");

        driver = ExecutionSetup.getDriver();
        jse = (JavascriptExecutor) driver;
        jse.executeScript("window.scrollBy(0," + scrollPoint + ")", "");

        System.out.println("---------------- Ending - scroll_without_WebE ----------------");
        return true;
    }
    catch (Exception e)
    {
        System.out.println("---------------- scroll is unsucessful in scroll_without_WebE ----------------");
        e.printStackTrace();
        return false;
    }
}

  1. Pour faire défiler vers le haut / bas lorsque le navigateur fait défiler (navigateur intégré) et que vous souhaitez faire défiler l' élément Haut / Bas vers Pour créer une zone visible ou un défilement dynamique . Cliquez ici pour la démonstration

En dessous du code donné passez votre élément.

public static boolean scroll_to_WebE(WebElement webe)
{
    try
    {
        System.out.println("---------------- Started - scroll_to_WebE ----------------");

        driver = ExecutionSetup.getDriver();
        ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", webe);

        System.out.println("---------------- Ending - scroll_to_WebE ----------------");
        return true;
    }
    catch (Exception e)
    {
        System.out.println("---------------- scroll is unsucessful in scroll_to_WebE ----------------");
        e.printStackTrace();
        return false;
    }
}

Remarque: Veuillez vérifier votre cas et utiliser vos méthodes. Si quelque cas manque, faites le moi savoir.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow