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

#javascript #python #selenium #selenium-webdriver #webdriver

Вопрос:

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

Есть какие-нибудь предложения?

Комментарии:

1. вы пробовали положить window.scrollTo(0, 0); внутрь свой execute_script ?

2. @mangoHero1 Я попробовал self.driver.window.scroll("window.scroll(0, 0);") , и скрипт выдал следующую ошибку: self.driver.window.scroll(«окно.прокрутка(0, 0);») Ошибка атрибута: объект ‘WebDriver’ не имеет атрибута ‘окно’

3. @mangoHero1 извините, я увидел, что опечатка исправлена, и сделал следующее: self.driver.execute_script("window.scroll(0, 0);") все еще не прокручивался вверх.

4. Как указывает Мангеро — что вы каким — то образом пропустили-это не «прокрутка», а «прокрутка».

5. @jlaur да, извините, что это было сделано поздно ночью, и я набрал код выше. Что я на самом деле попробовал, но это не сработало, так это следующее: self.driver.execute_script("window.scrollTo(0, 0);")

Ответ №1:

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

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

Комментарии:

1. наверное, нужно from selenium.webdriver.common.keys import Keys сначала?

2. @ErichBSchulz, да, это верно. Keys необходимо импортировать.

3. Кажется, это не работает

Ответ №2:

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

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

Комментарии:

1. Единственный надежный ответ здесь….

Ответ №3:

 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);")
 

Это сработает !!

Комментарии:

1. Пожалуйста, добавьте более подробную информацию в свой ответ

Ответ №4:

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

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

Ответ №5:

из веб-драйвера импорта selenium

 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
 

Это, несомненно, поможет вам 🙂

Ответ №6:

Существует 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=драйвер.find_element(By.XPATH,»xpath элемента»)
    действия=цепочки действий(драйвер) действия.move_to_element(элементы).выполнить()

Ответ №7:

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