Scrolling to top of the page in Python using Selenium
Question:
I’m having issues with scrolling to the top of the web page when using Python and Selenium.
When the page loads for some reason you are taken to the bottom of the page (this is due to be fixed). However, when I’m trying to scroll to the top it does not work.
I tried the following:
self.driver.execute_script("scroll(0, -250);")
And
self.driver.execute_script("scroll(0, 0);")
I have also tried locating the element then scrolling to it:
self.driver.execute_script("arguments[0].scrollIntoView()", element)
The above scrollIntoView() code works when scrolling down to the element. However, it does not work scrolling up.
I have tried this running Chrome Driver and PhantomJs.
Any suggestions?
Answers:
You can consider to locate the element in the HTML DOM
first, then we can scroll
the element into the Viewport
as follows:
element = driver.find_element_by_xpath("element_xpath")
self.driver.execute_script("return arguments[0].scrollIntoView(true);", element)
You can simply use CTRL
+ HOME
keys. It will scroll to the top of the page.
from selenium.webdriver.common.keys import Keys
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.HOME)
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);")
It will work !!
Please try this:
driver.execute_script("document.querySelector('div[role=dialog] ul').parentNode.scrollTop=1e100")
from selenium import webdriver
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
This will surely help you 🙂
There are 4 ways to scroll up or down
1)scroll by pixel
driver.execute_script("window.scrollBy(0,0)","")
2)scroll down until the element is not found
element=driver.find_element(By.XPATH,"xpath of element")
driver.execute_script("arguments[0].scrollIntoView();",element)
3)scroll till the end of the page
driver.execute_script("window.scrollBy(0,document.body.scrollHeight)")
-
using Action Chains
elementpos=driver.find_element(By.XPATH,"xpath of element")
actions=ActionChains(driver)
actions.move_to_element(elementpos).perform()
You can use document.body.scrollTop: a javascript variable which contains the value by what the page had been scrolled down before that.
like this :
driver.execute_script("scrollBy(0,-document.body.scrollTop)")
You can use document.body.scrollTop: it will scroll to the top of the page no matter the height of it.
Like this:
driver.execute_script("window.scrollTo(0, document.body.scrollTop);")
I’m having issues with scrolling to the top of the web page when using Python and Selenium.
When the page loads for some reason you are taken to the bottom of the page (this is due to be fixed). However, when I’m trying to scroll to the top it does not work.
I tried the following:
self.driver.execute_script("scroll(0, -250);")
And
self.driver.execute_script("scroll(0, 0);")
I have also tried locating the element then scrolling to it:
self.driver.execute_script("arguments[0].scrollIntoView()", element)
The above scrollIntoView() code works when scrolling down to the element. However, it does not work scrolling up.
I have tried this running Chrome Driver and PhantomJs.
Any suggestions?
You can consider to locate the element in the HTML DOM
first, then we can scroll
the element into the Viewport
as follows:
element = driver.find_element_by_xpath("element_xpath")
self.driver.execute_script("return arguments[0].scrollIntoView(true);", element)
You can simply use CTRL
+ HOME
keys. It will scroll to the top of the page.
from selenium.webdriver.common.keys import Keys
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.HOME)
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);")
It will work !!
Please try this:
driver.execute_script("document.querySelector('div[role=dialog] ul').parentNode.scrollTop=1e100")
from selenium import webdriver
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
This will surely help you 🙂
There are 4 ways to scroll up or down
1)scroll by pixel
driver.execute_script("window.scrollBy(0,0)","")
2)scroll down until the element is not found
element=driver.find_element(By.XPATH,"xpath of element")
driver.execute_script("arguments[0].scrollIntoView();",element)
3)scroll till the end of the page
driver.execute_script("window.scrollBy(0,document.body.scrollHeight)")
-
using Action Chains
elementpos=driver.find_element(By.XPATH,"xpath of element")
actions=ActionChains(driver)
actions.move_to_element(elementpos).perform()
You can use document.body.scrollTop: a javascript variable which contains the value by what the page had been scrolled down before that.
like this :
driver.execute_script("scrollBy(0,-document.body.scrollTop)")
You can use document.body.scrollTop: it will scroll to the top of the page no matter the height of it.
Like this:
driver.execute_script("window.scrollTo(0, document.body.scrollTop);")