Python과 Selenium WebDriver를 함께 사용하면 브라우저 안에서 JavaScript를 직접 실행할 수 있습니다. DOM(Document Object Model)은 JavaScript를 통해 페이지의 요소들과 상호작용하며, Selenium은 execute_script 메서드를 이용해 이러한 JavaScript 명령을 실행합니다. 실행하고자 하는 명령은 메서드의 인자(argument)로 전달됩니다.
페이지를 아래로 스크롤하는 것처럼 일부 동작은 Selenium 메서드만으로는 직접 처리하기 어렵습니다. 이런 경우 JavaScript Executor를 활용하면 해결할 수 있습니다. 스크롤에는 window.scrollTo 메서드가 사용되며, x축(가로) 방향과 y축(세로) 방향으로 스크롤할 픽셀 값이 각각 파라미터로 전달됩니다.
문법(Syntax)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
예제 1: 페이지 맨 아래까지 스크롤하기
from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/tutor_connect/index.php")
# 페이지 맨 아래까지 스크롤
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
JavaScript Executor를 사용하면 단순 스크롤뿐 아니라 링크 클릭과 같은 웹 동작도 수행할 수 있습니다. execute_script 메서드에 arguments[0].click() 명령과 클릭할 웹 요소(webelement)를 인자로 전달하면 됩니다.
문법(Syntax)
s = driver.find_element_by_css_selector("#id")
driver.execute_script("arguments[0].click();", s)
예제 2: 요소를 찾아 클릭하기
from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/index.htm")
# 요소 식별
s = driver.find_element_by_xpath("//*[text()='Library']")
# execute_script 메서드로 클릭 수행
driver.execute_script("arguments[0].click();", s)
print("클릭 후 페이지 제목: " + driver.title)
실행 결과(Output)

참고: Selenium 4부터는 find_element_by_css_selector(), find_element_by_xpath()와 같은 메서드가 공식적으로 지원 중단(deprecated)되었습니다. 최신 버전에서는 from selenium.webdriver.common.by import By를 임포트한 뒤 driver.find_element(By.CSS_SELECTOR, "#id") 또는 driver.find_element(By.XPATH, "//*[text()='Library']") 형태로 작성하는 것이 권장됩니다.