본문 바로가기
Python/Selenium

파이썬 Selenium ElementNotVisibleException 오류

by PySun 2023. 8. 15.
반응형

ElementNotVisibleException은 요소가 화면에 보이지 않는 상태에서 상호작용을 시도할 때 발생하는 오류입니다. 예시 코드와 해결 방법에 대해 설명하겠습니다.

예시 코드:

아래 예시 코드는 요소가 화면에 보이지 않는 상황에서 ElementNotVisibleException이 발생할 수 있습니다.

from selenium import webdriver

driver = webdriver.Chrome('path/to/chromedriver')

# 요소가 보이지 않는 페이지 접속
driver.get('https://www.example.com')

# 보이지 않는 요소 클릭 시도
try:
    invisible_button = driver.find_element_by_id('invisible-button')
    invisible_button.click()
except ElementNotVisibleException as e:
    print("요소가 보이지 않아 클릭할 수 없습니다.")
finally:
    # 브라우저 종료
    driver.quit()

해결 방법:

ElementNotVisibleException이 발생할 때, 다음과 같은 방법으로 해결할 수 있습니다.

요소가 보이도록 대기:

요소가 화면에 보이도록 기다린 후에 클릭하도록 합니다. WebDriverWait를 사용하여 요소가 보이도록 대기한 후에 클릭합니다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome('path/to/chromedriver')

# 페이지 접속
driver.get('https://www.example.com')

# 요소가 보이도록 대기하고 클릭 시도
try:
    invisible_button = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, 'invisible-button'))
    )
    invisible_button.click()
except ElementNotVisibleException as e:
    print("요소가 보이지 않아 클릭할 수 없습니다.")
finally:
    # 브라우저 종료
    driver.quit()

[Python/Selenium] - Selenium 웹 페이지 대기

스크롤하여 요소가 보이도록 만들기:

요소가 화면에 보이도록 스크롤링을 하여 클릭하려는 요소를 화면에 보이도록 합니다.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome('path/to/chromedriver')

# 페이지 접속
driver.get('https://www.example.com')

# 스크롤하여 요소가 화면에 보이도록 만들기
try:
    invisible_button = driver.find_element_by_id('invisible-button')
    driver.execute_script("arguments[0].scrollIntoView(true);", invisible_button)
    invisible_button.click()
except ElementNotVisibleException as e:
    print("요소가 보이지 않아 클릭할 수 없습니다.")
finally:
    # 브라우저 종료
    driver.quit()

ElementNotVisibleException이 발생하는 경우 위의 방법 중 하나를 적절히 선택하여 예외를 처리하고, 프로그램이 안정적으로 동작하도록 합니다. 요소가 화면에 보이도록 대기하거나 스크롤하여 요소를 화면에 보이도록 하는 방법을 활용할 수 있습니다.

반응형