본문 바로가기
Python/Selenium

Selenium MoveTargetOutOfBoundsException 오류 해결하기

by PySun 2025. 1. 5.
반응형

소개

Selenium을 사용하여 웹 자동화를 진행하다 보면, 'MoveTargetOutOfBoundsException' 오류를 마주할 수 있습니다. 이 에러는 주로 마우스 커서를 원하는 위치로 이동할 수 없을 때 발생하며, UI 요소가 보이지 않거나 화면의 경계를 넘어가려고 할 때 나타납니다. 이번 글에서는 이 오류가 발생하는 원인과 해결 방법에 대해 살펴보겠습니다.

에러 발생 예시 코드

먼저, 이 오류를 유발할 수 있는 간단한 예시 코드를 보겠습니다.

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 웹 드라이버 생성
driver = webdriver.Chrome()

# 특정 웹페이지 열기
driver.get('https://example.com')

# 존재하지 않는 요소로 마우스 이동 시도
element = driver.find_element_by_id('non_existent_element')
actions = ActionChains(driver)
actions.move_to_element(element).perform()

에러 해결 방법

1. 요소의 위치 확인

'MoveTargetOutOfBoundsException'을 피하려면, 먼저 이동하려는 요소가 실제로 존재하고, 화면에 보이는지 확인해야 합니다. 요소가 화면 밖에 있다면, 스크롤 동작을 통해 해당 요소를 보기 좋게 위치시켜야 합니다.

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
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()

# 특정 웹페이지 열기
driver.get('https://example.com')

# 요소가 화면에 보이도록 스크롤
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'target_element'))
)
driver.execute_script("arguments[0].scrollIntoView();", element)

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

2. 드라이버 창 크기 조정

또한, 드라이버의 창 크기를 조정하여 화면의 경계를 넘어갈 경우를 방지할 수 있습니다. 화면 크기를 조정한 뒤에도 문제가 해결되는지를 확인해 보세요.

driver.set_window_size(1200, 800)  # 가로 1200, 세로 800 크기로 조정

마무리

이번 블로그 글에서는 Selenium에서 발생할 수 있는 'MoveTargetOutOfBoundsException' 에러의 원인과 해결 방법에 대해 살펴보았습니다. 이동하려는 요소가 화면에 보이는지 확인하고, 필요 시 스크롤 동작 또는 드라이버 창 크기를 조정하여 문제를 해결할 수 있습니다. 웹 자동화를 진행할 때 항상 UI 요소가 올바르게 표시되는지 주의해야 할 점을 잊지 마세요!

반응형