Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

Python Selenium에서 JavaScript 실행하는 방법 – execute_script 완벽 가이드

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)

Python Selenium에서 JavaScript 실행하는 방법 – execute_script 완벽 가이드

참고: 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']") 형태로 작성하는 것이 권장됩니다.