Sri
Sri

Reputation: 2328

How to Scroll web page to the target element using selenium

I want to scroll to an element in selenium, but I want it to be at the top of the page, not just visible on the page.

How can I make it so that the page scrolls such that the element being scrolled to is at the top of the browser?

target = browser.find_element_by_css_selector(".answers-wrap")
actions = ActionChains(browser)
actions.move_to_element(target)
actions.perform()

Upvotes: 1

Views: 982

Answers (1)

0m3r
0m3r

Reputation: 12497

Here is example using this page we are on

To scroll the web page by 1000 pixel vertical use execute_script("window.scrollBy(0,1000)")

Example

import time
from selenium import webdriver

chrome_browser = webdriver.Chrome()
chrome_browser.get('https://stackoverflow.com/questions/61071131/'
                   'scroll-in-selenium-driver-to-make-element-at-top-of-the-page')
time.sleep(4)
''' execute_script("window.scrollBy(x-pixels,y-pixels)")
    scroll down the page by  1000 pixel vertical
'''
chrome_browser.execute_script("window.scrollBy(0,1000)")

execute_script("window.scrollBy(x-pixels,y-pixels)")

x-pixels is the number at x-axis, it moves to the left if number is positive and it move to the right if number is negative .y-pixels is the number at y-axis, it moves to the down if number is positive and it move to the up if number is in negative .


To scroll down the web page to the target element.

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

"arguments[0]" means first index of page starting at 0.

Code example

import time
from selenium import webdriver

chrome_browser = webdriver.Chrome()
chrome_browser.get('https://stackoverflow.com/questions/61071131/'
                   'scroll-in-selenium-driver-to-make-element-at-top-of-the-page')
time.sleep(4)

element = chrome_browser.find_element_by_css_selector(
    "#footer > div > nav > div:nth-child(1) > h5 > a")

chrome_browser.execute_script("arguments[0].scrollIntoView();", element)

Upvotes: 2

Related Questions