Python/Selenium
파이썬 Selenium ElementNotSelectableException 오류 해결하기
PySun
2023. 8. 21. 08:00
반응형
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이 발생한 경우 요소의 선택 가능 상태를 확인하고, 선택 가능한 상태인 경우에만 선택 동작을 수행하도록 처리합니다. 기다리기 방법을 활용하여 요소가 선택 가능한 상태가 될 때까지 대기할 수도 있습니다.
반응형