Прокрутка до верхней части страницы в 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)")
использование цепочек действий
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);")
Это будет работать!!