Selenium(Python)で要素をクリックする直前に、毎回要素までスクロールさせる処理を行うためのコードです。
このGoogle検索でスクロール処理させる必要は本来ないはずですが、例として書いています。
test.py
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.events import EventFiringWebDriver, AbstractEventListener
#要素をクリックする直前の処理を定義
class CustomListener(AbstractEventListener):
def before_click(self, element, driver):
# 要素までスクロールさせる
driver.execute_script('arguments[0].scrollIntoView({behavior: "smooth", block: "center"});', element)
# Webdriver ManagerでChromeDriverを取得
base_driver = webdriver.Chrome(ChromeDriverManager().install())
driver = EventFiringWebDriver(base_driver, CustomListener())
# Google検索で「Selenium」の検索結果を1〜10ページ目まで表示
driver.get('https://www.google.com/search?q=selenium')
for i in range(2, 11):
driver.find_element_by_xpath("//a[@aria-label='Page " + str(i) +"']").click()
driver.close()
driver.quit()