Python/Selenium
Selenium ElementNotFocusedException 오류 해결하기
PySun
2025. 2. 23. 08:11
반응형
소개
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은 강력한 도구이지만, 약간의 조정과 주의가 필요하다는 것을 기억하세요.
반응형