반응형
ElementNotInteractableException은 요소를 상호작용할 수 없는 상태일 때 발생하는 오류로, 보통 인터랙티브하지 않은 요소에 클릭 또는 입력을 시도할 때 발생합니다. 예시 코드와 해결 방법에 대해 설명하겠습니다.
예시 코드:
아래 예시 코드는 인터랙티브하지 않은 요소(예: 비활성화된 버튼)를 클릭하려고 할 때 ElementNotInteractableException이 발생할 수 있습니다.
from selenium import webdriver
driver = webdriver.Chrome('path/to/chromedriver')
# 비활성화된 버튼이 있는 페이지 접속
driver.get('https://www.example.com')
# 비활성화된 버튼 클릭 시도
try:
disabled_button = driver.find_element_by_id('disabled-button')
disabled_button.click()
except ElementNotInteractableException as e:
print("요소를 클릭할 수 없습니다.")
finally:
# 브라우저 종료
driver.quit()
해결 방법:
ElementNotInteractableException이 발생할 때, 다음과 같은 방법으로 해결할 수 있습니다.
요소가 활성화될 때까지 대기:
요소가 활성화될 때까지 기다렸다가 요소를 클릭하도록 합니다. 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:
disabled_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, 'disabled-button'))
)
disabled_button.click()
except ElementNotInteractableException as e:
print("요소를 클릭할 수 없습니다.")
finally:
# 브라우저 종료
driver.quit()
[Python/Selenium] - Selenium 웹 페이지 대기
JavaScript를 사용하여 클릭:
JavaScript를 사용하여 요소를 강제로 클릭할 수 있습니다. 이 방법은 일반적인 클릭이 불가능한 상황에서도 클릭을 시도할 수 있습니다.
from selenium import webdriver
driver = webdriver.Chrome('path/to/chromedriver')
# 비활성화된 버튼이 있는 페이지 접속
driver.get('https://www.example.com')
# JavaScript를 사용하여 클릭 시도
try:
disabled_button = driver.find_element_by_id('disabled-button')
driver.execute_script("arguments[0].click();", disabled_button)
except ElementNotInteractableException as e:
print("요소를 클릭할 수 없습니다.")
finally:
# 브라우저 종료
driver.quit()
스크롤하여 요소를 활성화시키기:
요소가 화면에 보이도록 스크롤링을 하여 요소를 활성화시키는 방법도 있습니다.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome('path/to/chromedriver')
# 페이지 접속
driver.get('https://www.example.com')
# 스크롤하여 요소가 화면에 보이도록 만들기
try:
element = driver.find_element_by_id('element-to-interact')
driver.execute_script("arguments[0].scrollIntoView(true);", element)
element.click()
except ElementNotInteractableException as e:
print("요소를 클릭할 수 없습니다.")
finally:
# 브라우저 종료
driver.quit()
ElementNotInteractableException이 발생하는 경우 위의 방법 중 하나를 적절히 선택하여 예외를 처리하고, 프로그램이 안정적으로 동작하도록 합니다. 요소가 상호작용 가능한 상태가 될 때까지 대기하거나 JavaScript를 사용하여 강제로 클릭하는 방법을 활용할 수 있습니다.
반응형
'Python > Selenium' 카테고리의 다른 글
파이썬 Selenium ElementNotVisibleException 오류 (0) | 2023.08.15 |
---|---|
파이썬 Selenium ElementClickInterceptedException 오류 (0) | 2023.08.14 |
파이썬 Selenium StaleElementReferenceException 오류 (0) | 2023.08.12 |
파이썬 Selenium TimeoutException (0) | 2023.08.11 |
파이썬 Selenium NoSuchElementException (0) | 2023.08.10 |