How can I scroll a web page using selenium webdriver in python?
Как я могу прокрутить веб-страницу с помощью selenium webdriver в python?
В настоящее время я использую selenium webdriver для анализа страницы друзей facebook и извлечения всех идентификаторов из AJAX-скрипта. Но мне нужно прокрутить вниз, чтобы получить всех друзей. Как я могу прокрутить вниз в Selenium. Я использую python.
Переведено автоматически
Ответ 1
Вы можете использовать
driver.execute_script("window.scrollTo(0, Y)")
где Y - высота (на fullhd мониторе это 1080). (Спасибо @lukeis)
Если вы хотите перейти к странице с бесконечной загрузкой, например, facebook в социальных сетях и т.д. (спасибо @Cuong Tran)
SCROLL_PAUSE_TIME = 0.5
# Get scroll height last_height = driver.execute_script("return document.body.scrollHeight")
whileTrue: # 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
другой метод (благодаря Juanse) заключается в выборе объекта и
label.sendKeys(Keys.PAGE_DOWN);
Ответ 2
Если вы хотите прокрутить вниз до конца бесконечной страницы (например, linkedin.com), вы можете использовать этот код:
SCROLL_PAUSE_TIME = 0.5
# Get scroll height last_height = driver.execute_script("return document.body.scrollHeight")
whileTrue: # 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
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)