#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)")
- использование Цепочек Действий
elementpos=драйвер.find_element(By.XPATH,»xpath элемента»)
действия=цепочки действий(драйвер) действия.move_to_element(элементы).выполнить()
Ответ №7:
Вы можете использовать document.body.scrollTop: переменную javascript, которая содержит значение, по которому страница была прокручена до этого. подобный этому : driver.execute_script("scrollBy(0,-document.body.scrollTop)")