본문 바로가기
Python/Selenium

파이썬 Selenium ElementNotSelectableException 오류 해결하기

by PySun 2023. 8. 21.
반응형

ElementNotSelectableException은 요소가 선택 불가능한 상태에서 선택을 시도할 때 발생하는 예외입니다. 일반적으로 라디오 버튼이나 체크박스 등이 선택 가능한 상태가 아닐 때 발생할 수 있습니다. 예시 코드와 해결 방법에 대해 설명하겠습니다.

예시 코드:

아래 예시 코드에서는 ElementNotSelectableException이 발생할 수 있는 상황을 보여줍니다. 선택 불가능한 요소를 선택하려는 시나리오를 시뮬레이션한 것입니다.

from selenium import webdriver

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

    # 선택 불가능한 요소를 선택 시도
    driver.get('https://www.example.com')
    checkbox = driver.find_element_by_id('non_selectable_checkbox')
    checkbox.click()

except ElementNotSelectableException as e:
    print("ElementNotSelectableException이 발생했습니다:", str(e))
finally:
    # 브라우저 종료
    driver.quit()

해결 방법:

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

요소의 선택 가능 상태 확인:

선택하려는 요소의 선택 가능 여부를 확인하고, 선택 가능한 경우에만 선택 동작을 수행합니다. is_enabled() 메서드를 사용하여 요소가 활성화되어 있는지 확인합니다.

# 선택 가능한 경우에만 요소 선택 예시
checkbox = driver.find_element_by_id('checkbox_id')
if checkbox.is_enabled():
    checkbox.click()
else:
    print("요소가 선택 불가능한 상태입니다.")

기다리기:

경우에 따라 요소가 선택 가능한 상태가 될 때까지 기다렸다가 선택 동작을 수행합니다. WebDriverWait와 expected_conditions를 사용하여 요소의 활성화를 기다릴 수 있습니다.

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

# 요소의 선택 가능 상태 기다리기 예시
checkbox = driver.find_element_by_id('checkbox_id')
wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.ID, 'checkbox_id')))
checkbox.click()

ElementNotSelectableException이 발생한 경우 요소의 선택 가능 상태를 확인하고, 선택 가능한 상태인 경우에만 선택 동작을 수행하도록 처리합니다. 기다리기 방법을 활용하여 요소가 선택 가능한 상태가 될 때까지 대기할 수도 있습니다.

반응형