반응형
소개
Selenium을 사용하여 자동화 테스팅을 진행하다 보면 'ElementHandleNotFoundException'이라는 에러에 부딪힐 때가 있습니다. 이 오류는 특정 요소를 찾으려고 할 때 발생하는데, 요소가 존재하지 않거나 로딩이 완료되지 않아 나타나는 경우가 많습니다. 이번 블로그 글에서는 이 오류의 원인과 해결 방법을 함께 살펴보겠습니다.
에러 발생 예시 코드
먼저, 'ElementHandleNotFoundException' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.
from selenium import webdriver
# 웹 드라이버 초기화
driver = webdriver.Chrome()
# 특정 웹사이트 열기
driver.get('https://example.com')
# 요소를 찾으려고 시도
element = driver.find_element_by_id('non_existent_id')
print(element.text)
에러 해결 방법
1. 요소 로드 확인하기
주요한 원인 중 하나는 요소가 페이지에 존재하지 않거나 로드되지 않았기 때문입니다. '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()
# 특정 웹사이트 열기
driver.get('https://example.com')
# 요소가 로드될 때까지 기다리기
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'non_existent_id'))
)
print(element.text)
except Exception as e:
print(f"에러 발생: {e}")
finally:
driver.quit()
2. 선택자 확인하기
찾으려는 요소의 선택자가 잘못되었을 수도 있습니다. 선택자가 올바른지 확인해야 합니다. 클래스, 태그 또는 XPATH를 사용하여 요소를 찾는 방법이 있습니다.
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()
# 특정 웹사이트 열기
driver.get('https://example.com')
# 올바른 선택자로 요소 찾기
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '.valid-class'))
)
print(element.text)
except Exception as e:
print(f"에러 발생: {e}")
finally:
driver.quit()
마무리
이번 포스트에서는 Selenium을 사용할 때 발생할 수 있는 'ElementHandleNotFoundException' 에러에 대한 원인과 해결방법을 살펴보았습니다. 요소가 로드될 때까지 기다리거나, 선택자를 재검토하여 올바른 요소를 찾는 것이 중요하다는 점을 기억하세요. Selenium을 활용한 웹 자동화가 매끄럽게 진행되길 바랍니다!
반응형
'Python > Selenium' 카테고리의 다른 글
selenium.current_url로 현재 URL 가져오기 (0) | 2025.02.23 |
---|---|
selenium.action_chains로 복합 동작 수행하기 (0) | 2025.02.23 |
Selenium CookieNotFoundException 오류 해결하기 (0) | 2025.02.22 |
Selenium ChromeNotInstalledException 오류 해결하기 (0) | 2025.02.22 |
selenium.accept로 경고창 수락하기 (0) | 2025.02.22 |