hacer down con como java scroll selenium-webdriver selenium-rc

java - con - selenium scroll down python



Página desplazarse hacia arriba o hacia abajo en Selenium WebDriver(Selenium 2) usando Java (11)

He escrito el siguiente código en Selenium 1 (también conocido como Selenium RC) para desplazar páginas usando java:

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

¿Cuál es el código equivalente en Selenium 2 (WebDriver)?


Debe agregar un desplazamiento a la página para seleccionar todos los elementos usando Selenium.executeScript("window.scrollBy(0,450)", "") .

Si tiene una lista grande, agregue el desplazamiento varias veces a través de la ejecución. Tenga en cuenta que el desplazamiento solo va a un cierto punto en la página, por ejemplo (0,450).


El ejecutor de Javascript siempre hace el trabajo a la perfección:

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

donde (0,300) son las distancias horizontal y vertical respectivamente. Coloque sus distancias según sus requisitos.

Si eres perfeccionista y te gusta obtener la distancia exacta a la que deseas desplazarte en el primer intento, utiliza esta herramienta, MeasureIt . Es un complemento brillante de Firefox.


Gracias por la respuesta de Ripon Al Wasim. Hice algunas mejoras. debido a problemas de red, vuelvo a intentar tres veces hasta romper el ciclo.

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


Hay muchas maneras de desplazarse hacia arriba y hacia abajo en Selenium Webdriver. Siempre uso Java Script para hacer lo mismo.

A continuación está el código que siempre me funciona si quiero desplazarme hacia arriba o hacia abajo

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

Puede obtener el código completo desde aquí Página de desplazamiento en Selenio

Si desea desplazarse por un elemento, debajo de la pieza de código funcionará para usted.

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

Obtendrá el documento completo aquí Desplazarse por un elemento específico


No quería usar JavaScript ni ninguna biblioteca externa, así que esta era mi solución (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();

También puede hacer fácilmente que este sea un método de extensión para desplazarse hacia arriba o hacia abajo en cualquier elemento.


Para desplazarse hacia abajo :

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

O bien, puedes hacer lo siguiente:

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

Para desplazarse hacia arriba :

jse.executeScript("window.scrollBy(0,-250)", ""); OR, jse.executeScript("scroll(0, -250);");


Prueba esto

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


Puede que esta no sea una respuesta exacta a su pregunta (en términos de WebDriver), pero descubrí que la biblioteca java.awt es más estable que el selenium.Keys . selenium.Keys . Por lo tanto, una acción de bajada de página usando el primero será:

Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_PAGE_DOWN); robot.keyRelease(KeyEvent.VK_PAGE_DOWN);


Desplazarse al pie de la página:

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


JavascriptExecutor js = ((JavascriptExecutor) driver);

Desplácese hacia abajo:

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

Desplazarse hacia arriba:

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


JavascriptExecutor jse = ((JavascriptExecutor) driver); jse.executeScript("window.scrollTo(0, document.body.scrollHeight)");

Este código funciona para mí. Como la página que estoy probando, carga a medida que nos desplazamos hacia abajo.