본문 바로가기
Python/Selenium

Selenium MovetoElementNotInteractableException 오류 해결하기

by PySun 2025. 2. 26.
반응형

소개

Selenium을 사용하다 보면 'MovetoElementNotInteractableException' 오류를 마주칠 수 있습니다. 이 오류는 특정 요소가 화면에 표시되고 있지만, 실제로 클릭이나 다른 상호작용이 가능하지 않을 때 발생합니다. 이 글에서는 이 오류의 원인과 해결 방법을 알아보겠습니다.

에러 발생 예시 코드

먼저, 'MovetoElementNotInteractableException' 오류가 발생할 수 있는 코드의 예를 살펴보겠습니다.

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
import time

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

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

# 특정 요소에 마우스 이동
element = driver.find_element(By.ID, 'some-element')

# 마우스를 해당 요소로 이동
actions = ActionChains(driver)
actions.move_to_element(element).perform()

# 잠시 대기
time.sleep(3)

# 클릭 시도
element.click()

에러 해결 방법

1. 요소가 실제로 상호작용 가능해질 때까지 대기

요소가 상호작용 가능해지기 전에 클릭을 시도하는 경우가 많습니다. WebDriverWait을 사용하여 요소가 상호작용 가능해질 때까지 기다리세요.

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 요소가 상호작용 가능해지기를 대기
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID, 'some-element')))

# 클릭
element.click()

2. JavaScript로 요소 클릭 시도

Selenium이 제공하는 클릭이 제대로 작동하지 않는 경우, JavaScript를 사용하여 클릭 이벤트를 수동으로 처리할 수 있습니다.

driver.execute_script("arguments[0].click();", element)

3. 요소가 보이는 위치로 스크롤

요소가 시각적으로 보이지 않는 위치에 있거나, 다른 요소에 의해 가려져 있는 경우가 있습니다. 이 경우, 스크롤을 사용하여 해당 요소를 보이게 하세요.

driver.execute_script("arguments[0].scrollIntoView();", element)

마무리

이 블로그 글에서는 Selenium을 사용할 때 발생하는 'MovetoElementNotInteractableException' 오류에 대한 해결 방법을 살펴보았습니다. 요소가 상호작용 가능해질 때까지 기다리거나, JavaScript를 활용하여 클릭하거나, 요소를 스크롤로 보이게 함으로써 이러한 문제를 극복할 수 있습니다. Selenium의 사용 시에는 상황에 맞는 적절한 방법을 선택하여 효율적으로 자동화를 진행하세요.

반응형