본문 바로가기
Python/Selenium

Selenium ElementNotFocusedException 오류 해결하기

by PySun 2025. 2. 23.
반응형

소개

Selenium을 사용하여 자동화 테스트를 진행하다 보면 다양한 오류에 부딪히게 됩니다. 그중 'ElementNotFocusedException' 오류는 요소가 포커스되지 않아 발생하는 문제로, 많은 사용자들이 이 오류를 경험하게 됩니다. 이번 블로그 글에서는 이 오류의 원인과 해결 방법에 대해 알아보도록 하겠습니다.

에러 발생 예시 코드

아래는 'ElementNotFocusedException'이 발생할 수 있는 간단한 코드 예시입니다. 사용자가 입력 필드로 포커스를 주지 않고 입력을 시도하는 경우를 살펴보겠습니다.

from selenium import webdriver
from selenium.webdriver.common.by import By

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

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

# 입력 필드에 텍스트 입력 시도
input_field = driver.find_element(By.NAME, "username")
input_field.send_keys("test_user")

에러 해결 방법

1. 요소에 포커스를 주기

Selenium은 요소에 명시적으로 포커스를 주어야 할 때가 있습니다. 다음과 같이 JavaScript를 사용하여 요소에 포커스를 줄 수 있습니다.

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

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

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

# 입력 필드 선택
input_field = driver.find_element(By.NAME, "username")

# JavaScript를 사용하여 요소에 포커스 주기
driver.execute_script("arguments[0].focus();", input_field)

# 입력 필드에 텍스트 입력
input_field.send_keys("test_user")

2. 요소가 가시적인지 확인

입력하려는 요소가 화면에 가시적인 상태여야 합니다. 요소가 DOM에 있지만 숨겨져 있다면 'ElementNotFocusedException'이 발생할 수 있습니다. 요소가 보이도록 스크롤할 수 있습니다.

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

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

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

# 입력 필드 선택
input_field = driver.find_element(By.NAME, "username")

# 요소의 위치로 스크롤
driver.execute_script("arguments[0].scrollIntoView();", input_field)
time.sleep(1)  # 약간의 대기 시간

# 입력 필드에 텍스트 입력
input_field.send_keys("test_user")

마무리

이번 글에서는 Selenium을 사용할 때 발생할 수 있는 'ElementNotFocusedException' 오류에 대한 원인과 해결 방법을 살펴보았습니다. 요소에 포커스를 주거나, 요소가 가시적인지 확인하는 방법을 통해 이 문제를 극복할 수 있습니다. Selenium은 강력한 도구이지만, 약간의 조정과 주의가 필요하다는 것을 기억하세요.

반응형