Page faites défiler vers le haut ou vers le bas dans Selenium WebDriver (Selenium 2) en utilisant java


J'ai écrit le code suivant dans Selenium 1 (alias Selenium RC) pour le défilement de page en utilisant java:

selenium.getEval("scrollBy(0, 250)");

Quel est le code équivalent dans Selenium 2 (WebDriver)?

Author: Ripon Al Wasim, 2012-09-06

12 answers

Pour faites Défiler vers le bas:

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)", "");

OU, vous pouvez faire comme suit:

jse.executeScript("scroll(0, 250);");

Pour faites Défiler vers le haut:

jse.executeScript("window.scrollBy(0,-250)", "");
OR,
jse.executeScript("scroll(0, -250);");
 84
Author: Ripon Al Wasim, 2016-08-05 11:48:57

Défilement vers le Bas d'une page:

JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
 31
Author: user3472488, 2017-11-08 12:03:18

Ce n'est peut-être pas une réponse exacte à votre question (en termes de WebDriver), mais j'ai trouvé que la bibliothèque java.awt est plus stable que selenium.Keys. Ainsi, une action page vers le bas utilisant la première sera:

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_PAGE_DOWN);
robot.keyRelease(KeyEvent.VK_PAGE_DOWN);
 9
Author: rs79, 2015-06-04 17:26:10

Il y a plusieurs façons de faire défiler de haut en bas dans Selenium Webdriver J'utilise toujours Java Script pour faire la même chose.

Ci-Dessous est le code qui fonctionne toujours pour moi si je veux faire défiler vers le haut ou vers le bas

 // This  will scroll page 400 pixel vertical
  ((JavascriptExecutor)driver).executeScript("scroll(0,400)");

Vous pouvez obtenir le code complet à partir d'ici Page de défilement dans Selenium

Si vous voulez faire défiler un élément, le morceau de code ci-dessous fonctionnera pour vous.

je.executeScript("arguments[0].scrollIntoView(true);",element);

Vous obtiendrez le doc complet ici Faites défiler pour un élément spécifique

 9
Author: Mukesh Otwani, 2015-06-10 20:52:43
JavascriptExecutor js = ((JavascriptExecutor) driver);

Faites Défiler vers le bas:

js.executeScript("window.scrollTo(0, document.body.scrollHeight);");

Faites Défiler vers le haut:

js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
 2
Author: CreaThor, 2017-07-28 09:22:20

Je ne voulais pas utiliser JavaScript, ni aucune bibliothèque externe, donc c'était ma solution (C#):

IWebElement body = Driver.FindElement(By.TagName("body"));

IAction scrollDown = new Actions(Driver)
    .MoveToElement(body, body.Size.Width - 10, 15) // position mouse over scrollbar
    .ClickAndHold()
    .MoveByOffset(0, 50) // scroll down
    .Release()
    .Build();

scrollDown.Perform();

Vous pouvez également facilement en faire une méthode d'extension pour faire défiler vers le haut ou vers le bas sur n'importe quel élément.

 1
Author: KthProg, 2017-01-19 18:30:26

Essayez ceci

        Actions dragger = new Actions(driver);
        WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("//*[@id='jobreslist_outercontainer']/div/div[2]/div"));

        // drag downwards
        int numberOfPixelsToDragTheScrollbarDown = 50;
        for (int i=10;i<500;i=i+numberOfPixelsToDragTheScrollbarDown){
            try{
        // this causes a gradual drag of the scroll bar, 10 units at a time
        dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();
        Thread.sleep(1000L);
            }catch(Exception e1){}
        } 

        // now drag opposite way (downwards)
        numberOfPixelsToDragTheScrollbarDown = -50;
        for (int i=500;i>10;i=i+numberOfPixelsToDragTheScrollbarDown){
        // this causes a gradual drag of the scroll bar, -10 units at a time
        dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform();
        Thread.sleep(1000L);
        }
 0
Author: Maddy, 2013-06-27 02:39:09

Vous devez ajouter un défilement à la page pour sélectionner tous les éléments en utilisant Selenium.executeScript("window.scrollBy(0,450)", "").

Si vous avez une grande liste, ajoutez le défilement plusieurs fois dans l'exécution. Notez que le défilement ne va qu'à un certain point de la page par exemple (0,450).

 0
Author: SufiWorld, 2016-08-24 17:12:34
JavascriptExecutor jse = ((JavascriptExecutor) driver);
jse.executeScript("window.scrollTo(0, document.body.scrollHeight)");

Ce code fonctionne pour moi. Comme la page que je teste, se charge lorsque nous faisons défiler vers le bas.

 0
Author: Latha, 2016-11-03 09:11:12

Javascript executor fait toujours parfaitement le travail:

((JavascriptExecutor) driver).executeScript("scroll(0,300)");

(0,300) sont les distances horizontales et verticales respectivement. Mettez vos distances selon vos exigences.

Si vous êtes perfectionniste et que vous aimez obtenir la distance exacte à laquelle vous souhaitez faire défiler à la première tentative, utilisez cet outil, MeasureIt. Il est un brillant firefox add-on.

 0
Author: , 2016-11-10 14:59:36

Merci pour la réponse de Ripon Al Wasim. J'ai fait quelques améliorations. en raison de problèmes de réseau, je réessaie trois fois jusqu'à ce que la boucle de rupture.

driver.get(url)
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
try_times = 0
while True:
    # Scroll down to bottom
    driver.execute_script("window.scrollBy(0,2000)")

    # Wait to load page
    time.sleep(scroll_delay)
    # Calculate new scroll height and compare with last scroll height
    new_height = driver.execute_script("return document.body.scrollHeight")

    if last_height == new_height:
        try_times += 1

    if try_times > 3:
        try_times = 0
        break
    last_height = new_height
 0
Author: Ivan, 2018-03-06 10:55:51
  1. Si vous souhaitez faire défiler la page verticalement pour effectuer une action, vous pouvez le faire en utilisant le JavaScript suivant. ((pilote JavascriptExecutor)).executeScript ("fenêtre.scrollTo (0, document.corps.scrollHeight)");

        Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
    

Importation org.openqa.nium.JavascriptExecutor;

2.Si vous souhaitez faire défiler un élément particulier, vous devez utiliser le JavaScript suivant.

Élément WebElement = pilote.findElement (Par.xpath ("//input [@id= 'email']")); ((JavascriptExecutor) pilote).executeScript ("arguments[0].scrollIntoView();", élément);

Où ‘element’ est le localisateur où vous voulez faire défiler.

3.Si vous souhaitez faire défiler à une coordonnée particulière, utilisez le JavaScript suivant.
((JavascriptExecutor) pilote).executeScript ("fenêtre.scrollBy(200,300)"); Où "200 300" sont les coordonnées.

4.Si vous voulez faire défiler vers le haut dans une direction verticale, vous pouvez utiliser le JavaScript suivant. ((JavascriptExecutor) pilote).executeScript ("fenêtre.scrollTo (document.corps.scrollHeight,0)");

  1. Si vous souhaitez faire défiler horizontalement dans la bonne direction, utilisez le JavaScript suivant. ((pilote JavascriptExecutor)).executeScript ("fenêtre.scrollBy(2000,0)");

  2. Si vous voulez faire défiler horizontalement dans la direction de gauche, utilisez ce qui suit JavaScript. ((pilote JavascriptExecutor)).executeScript ("fenêtre.scrollBy(-2000,0)");

 0
Author: Tapan Khimani, 2018-10-05 06:52:21