Прокрутка до верхней части страницы в Python с помощью Selenium

У меня проблемы с прокруткой вверх страницы при использовании Python и Selenium.

Когда страница по какой-либо причине загружается, вы переходите в конец страницы (это должно быть исправлено). Тем не менее, когда я пытаюсь прокрутить вверх, это не работает.

Я попробовал следующее:

self.driver.execute_script("scroll(0, -250);")

А также

self.driver.execute_script("scroll(0, 0);")

Я также попытался найти элемент, а затем перейти к нему:

self.driver.execute_script("arguments[0].scrollIntoView()", element)

Приведенный выше код scrollIntoView() работает при прокрутке вниз до элемента. Тем не менее, не работает прокрутка вверх.

Я попробовал это запустить Chrome Driver и PhantomJs.

Какие-либо предложения?

8 ответов

Решение

Вы можете рассмотреть возможность найти элемент в HTML DOM сначала мы можем scroll элемент в Viewport следующее:

element = driver.find_element_by_xpath("element_xpath")
self.driver.execute_script("return arguments[0].scrollIntoView(true);", element)

Вы можете просто использовать клавиши CTRL + HOME. Он будет прокручиваться до верхней части страницы.

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.HOME)

Есть 4 способа прокрутки вверх или вниз

1) прокрутка по пикселям

driver.execute_script("window.scrollBy(0,0)","")

2) прокрутите вниз, пока элемент не будет найден

element=driver.find_element(By.XPATH,"xpath of element")
driver.execute_script("arguments[0].scrollIntoView();",element)

3) прокрутите до конца страницы

driver.execute_script("window.scrollBy(0,document.body.scrollHeight)")
  1. использование цепочек действий

    elementpos=driver.find_element(By.XPATH,"xpath элемента")
    actions=ActionChains(driver)actions.move_to_element(elementpos).perform ()

Вы можете использовать document.body.scrollTop: он будет прокручиваться до верхней части страницы независимо от ее высоты. Так:

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

Вы можете использовать document.body.scrollTop: переменную javascript, которая содержит значение, на которое страница была прокручена до этого. как это : driver.execute_script("scrollBy(0,-document.body.scrollTop)")

Пожалуйста, попробуйте это:

driver.execute_script("document.querySelector('div[role=dialog] ul').parentNode.scrollTop=1e100")

Из селена импорт вебдрайвер

t=10
while t:

#if you want to scroll to the end of the page,use this

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


#if you want to scroll down upto some level use this, here i used "1000" you may vary 
#it according to your use

driver.execute_script("scrollBy(0,+1000);")
    sleep(3)


#if you want to scroll some level up, use this,again i used here "-500" you may vary 
#according to your use 

driver.execute_script("scrollBy(0,-500);")
sleep(3)
t=t-1       # it`s a part of the loop

Это, безусловно, поможет вам:)

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("__")

#to scroll try use the following command
driver.execute_script("scrollBy(0,250);")

Это будет работать!!

Другие вопросы по тегам