Selenium의 webdriver.execute_script: 웹 페이지에서 JavaScript 실행하기
웹 자동화의 세계에는 무궁무진한 가능성이 존재합니다. Selenium은 이러한 가능성을 현실로 만들어주는 도구 중 하나입니다. 특히 webdriver.execute_script 메서드는 웹 페이지 내에서 사용자 정의 JavaScript 코드를 실행할 수 있는 강력한 기능을 제공합니다. 이 포스팅에서는 execute_script의 사용법과 함께 다양한 예제를 통해 이 기능을 탐험해 보겠습니다.
webdriver.execute_script 함수 소개
webdriver.execute_script 메서드는 Selenium의 WebDriver 인스턴스를 통해 JavaScript 코드를 실행할 수 있게 해줍니다. 이를 통해 동적인 웹 페이지에서 필요한 다양한 작업을 손쉽게 자동화할 수 있습니다. 이 메서드는 기본적으로 문자열 형태의 JavaScript 코드를 받아 해당 코드가 실행될 웹 페이지의 컨텍스트에서 평가됩니다.
함수 시그니처
webdriver.execute_script(script, *args)
매개변수:
- script: 실행할 JavaScript 코드의 문자열입니다.
- *args: JavaScript 코드에 전달할 인수들입니다.
반환 값:
- JavaScript 코드가 반환하는 값을 반환합니다.
사용 예제
기본 예제
다음은 webdriver.execute_script를 사용하여 웹 페이지에서 간단한 JavaScript 코드(예: 페이지의 타이틀 가져오기)를 실행하는 기본 예제입니다.
from selenium import webdriver
# WebDriver 인스턴스 생성
driver = webdriver.Chrome()
# 웹 페이지 열기
driver.get("https://www.example.com")
# JavaScript 코드 실행하여 타이틀 가져오기
title = driver.execute_script("return document.title;")
print(f"The title of the page is: {title}")
# 드라이버 종료
driver.quit()
# 출력:
# The title of the page is: Example Domain
더 복잡한 예제: DOM 요소 수정하기
JavaScript를 사용하여 웹 페이지의 요소를 수정하거나 추가할 수도 있습니다. 아래의 예제에서는 새로운 요소를 페이지에 추가하는 방법을 보여줍니다.
from selenium import webdriver
# WebDriver 인스턴스 생성
driver = webdriver.Chrome()
# 웹 페이지 열기
driver.get("https://www.example.com")
# 페이지의 바디에 새로운 요소 추가
driver.execute_script("var newDiv = document.createElement('div'); newDiv.innerHTML = 'Hello, Selenium!'; document.body.appendChild(newDiv);")
# 추가한 요소의 텍스트 확인하기
added_text = driver.execute_script("return document.body.lastChild.innerHTML;")
print(f"The added text is: {added_text}")
# 드라이버 종료
driver.quit()
# 출력:
# The added text is: Hello, Selenium!
결론
webdriver.execute_script 메서드는 웹 페이지에 JavaScript 코드를 실행하는 데 매우 유용하게 활용됩니다. 이를 통해 다이나믹한 웹 페이지에서 효과적으로 요소를 수정하거나 정보를 추출할 수 있습니다. 여러분도 이 기능을 활용하여 편리한 웹 자동화 작업을 경험해 보세요!
- JavaScript를 사용하여 웹 페이지의 여러 작업을 자동화해 보세요!
- 지금 바로 webdriver.execute_script 메서드를 사용하여 웹 페이지의 매력을 더해 보세요!
'Python > Selenium' 카테고리의 다른 글
selenium.webdriver.find_element_by_css_selector로 CSS 선택자 사용하기 (0) | 2025.01.20 |
---|---|
selenium.webdriver.find_element로 다양한 요소 활용하기 (0) | 2025.01.20 |
Selenium TimeoutException: Message: Timed out waiting for element 해결하기 (0) | 2025.01.19 |
Selenium SessionSecretException 오류 해결하기 (0) | 2025.01.19 |
Selenium took too long to load 오류 해결하기 (0) | 2025.01.19 |