Вопрос-Ответ

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)

Вы также можете использовать

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

для прокрутки до нижней части страницы.

Если вы хотите перейти к странице с бесконечной загрузкой, например, facebook в социальных сетях и т.д. (спасибо @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

другой метод (благодаря 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")

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

Ссылка: https://pythonly.ru/a/28928684/1316860

Ответ 3

Вы можете использовать send_keys для имитации END (или PAGE_DOWN) нажатия клавиши (которая обычно прокручивает страницу):

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)
Ответ 4

тот же метод, что показан здесь:

в python вы можете просто использовать

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

(Y - это вертикальное положение, до которого вы хотите прокрутить)

python selenium selenium-webdriver