¿Cómo puedo desplazarme por una página web usando Selenium webdriver en Python?

Resuelto user2523364 asked hace 10 años • 0 respuestas

Actualmente estoy usando Selenium webdriver para analizar la página de amigos de los usuarios de Facebook y extraer todos los identificadores del script AJAX. Pero necesito desplazarme hacia abajo para encontrar todos los amigos. ¿Cómo puedo desplazarme hacia abajo en Selenium? Estoy usando Python.

user2523364 avatar Jan 08 '14 10:01 user2523364
Aceptado

Puedes usar

driver.execute_script("window.scrollTo(0, Y)")

donde Y es la altura (en un monitor fullhd es 1080). (Gracias a @lukeis)

También puedes usar

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

para desplazarse hasta el final de la página.

Si desea desplazarse a una página con carga infinita , como las de redes sociales, Facebook, etc. (gracias a @Cuong Tran)

SCROLL_PAUSE_TIME = 0.5

# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")

while True:
    # Scroll down to bottom
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    # Wait to load page
    time.sleep(SCROLL_PAUSE_TIME)

    # Calculate new scroll height and compare with last scroll height
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

Otro método (gracias a Juanse) es seleccionar un objeto y

label.sendKeys(Keys.PAGE_DOWN);
OWADVL avatar Jan 03 '2015 22:01 OWADVL

Si desea desplazarse hacia abajo hasta el final de una página infinita (como linkedin.com ), puede usar este código:

SCROLL_PAUSE_TIME = 0.5

# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")

while True:
    # Scroll down to bottom
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

    # Wait to load page
    time.sleep(SCROLL_PAUSE_TIME)

    # Calculate new scroll height and compare with last scroll height
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

Referencia: https://stackoverflow.com/a/28928684/1316860

Cuong Tran avatar Apr 08 '2017 19:04 Cuong Tran

Puede utilizar send_keyspara simular una pulsación de tecla END(oPAGE_DOWN ) (que normalmente desplaza la página):

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
html = driver.find_element(By.TAG_NAME, 'html')
html.send_keys(Keys.END)
LIU YUE avatar Jul 15 '2018 05:07 LIU YUE

El mismo método que se muestra aquí :

en Python puedes usar

driver.execute_script("window.scrollTo(0, Y)")

(Y es la posición vertical a la que desea desplazarse)

lukeis avatar Jan 08 '2014 04:01 lukeis
element=find_element_by_xpath("xpath of the li you are trying to access")

element.location_once_scrolled_into_view

Esto me ayudó cuando intentaba acceder a un 'li' que no era visible.

premonition avatar Jun 07 '2016 22:06 premonition