본문 바로가기
Python/Selenium

Selenium ElementNotVisibleException 오류 해결하기

by PySun 2025. 1. 2.
반응형

소개

Selenium을 사용하여 웹 자동화를 수행할 때, 'ElementNotVisibleException' 오류가 발생하는 것은 꽤 일반적인 문제입니다. 이 오류는 해당 요소가 화면에서 볼 수 없는 상태일 때 발생합니다. 비활성화된 요소, CSS 속성이나 자바스크립트에 의해 숨겨진 요소 등 다양한 이유로 인해 발생할 수 있습니다. 이번 블로그 글에서는 이 오류의 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ElementNotVisibleException' 오류가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

from selenium import webdriver
from selenium.common.exceptions import ElementNotVisibleException
import time

# 웹드라이버 초기화
driver = webdriver.Chrome()

# 웹사이트 열기
driver.get('https://example.com')

# 화면에 보이지 않는 요소 클릭 시도
try:
    hidden_element = driver.find_element_by_id('hiddenElement')
    hidden_element.click()
except ElementNotVisibleException as e:
    print("ElementNotVisibleException 발생:", e)

# 드라이버 종료
driver.quit()

에러 해결 방법

1. 요소가 실제로 보이는지 확인하기

가장 먼저 확인해야 할 것은 해당 요소가 실제로 화면에 표시되고 있는지입니다. 요소가 숨겨져 있다면, 이를 표시하도록 하거나 다른 요소를 클릭하도록 하세요.

from selenium import webdriver

# 웹드라이버 초기화
driver = webdriver.Chrome()

# 웹사이트 열기
driver.get('https://example.com')

# 요소 확인
hidden_element = driver.find_element_by_id('hiddenElement')
if hidden_element.is_displayed():
    hidden_element.click()
else:
    print("요소가 화면에 표시되지 않습니다.")

# 드라이버 종료
driver.quit()

2. JavaScript 사용하여 요소 보이기

때로는 JS를 사용하여 요소를 활성화하거나 보여야 할 필요가 있습니다. 아래 코드를 사용하여 요소의 스타일을 변경하여 표시할 수 있습니다.

from selenium import webdriver

# 웹드라이버 초기화
driver = webdriver.Chrome()

# 웹사이트 열기
driver.get('https://example.com')

# JavaScript로 요소를 보이게 하기
hidden_element = driver.find_element_by_id('hiddenElement')
driver.execute_script("arguments[0].style.display='block';", hidden_element)
hidden_element.click()

# 드라이버 종료
driver.quit()

마무리

이 블로그 글에서는 Selenium을 사용하면서 발생할 수 있는 'ElementNotVisibleException' 오류에 대한 간단한 해결 방법을 살펴보았습니다. 요소가 화면에 보이는지 검사하고, 필요시 JavaScript를 통해 스타일을 변경하여 요소를 표시합니다. Selenium을 사용할 때는 항상 요소의 상태를 체크하고, 효율적인 방법으로 자동화를 진행하는 것이 중요합니다. 언제나 여러분의 자동화 작업이 원활하게 진행되기를 바랍니다!

반응형