본문 바로가기
Python/Selenium

Selenium Unable to locate element 오류 해결하기

by PySun 2025. 2. 4.
반응형

소개

Selenium을 사용하여 웹 자동화를 진행하다 보면 가끔 'Unable to locate element' 오류에 부딪히는 경우가 있습니다. 이 오류는 Selenium이 지정한 요소를 찾지 못할 때 발생하는데, 다양한 원인이 있을 수 있습니다. 이 포스트에서는 이 오류에 대한 예시 코드와 함께 여러 가지 해결 방법을 소개하겠습니다.

에러 발생 예시 코드

아래는 'Unable to locate element' 오류를 발생시킬 수 있는 간단한 예시 코드입니다.

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

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

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

# 요소 찾기 (실제 페이지에 없는 요소)
element = driver.find_element(By.ID, 'non-existent-id')
print(element.text)

에러 해결 방법

1. 올바른 선택자 사용하기

먼저, 찾으려는 요소의 ID, 클래스명, 태그명 혹은 CSS 선택자가 올바른지 확인하세요. 자주 발생하는 실수 중 하나는 잘못된 선택자를 사용하는 것입니다.

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

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

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

# 올바른 요소 찾기
element = driver.find_element(By.ID, 'correct-id')  # 정확한 ID 사용
print(element.text)

2. 요소가 로드될 때까지 대기하기

웹페이지가 완전히 로드되기 전에 요소를 찾으려고 하면 이 오류가 발생할 수 있습니다. 이러한 경우, 명시적 대기를 사용하여 요소가 로드될 때까지 기다리게 할 수 있습니다.

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')

# 요소가 나타날 때까지 대기
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, 'expected-id'))
)
print(element.text)

3. iframe 내의 요소 접근하기

Selenium이 iframe 내의 요소를 찾지 못할 때도 이 오류가 발생할 수 있습니다. 이 경우, 해당 iframe으로 전환한 후 요소를 찾아야 합니다.

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

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

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

# iframe으로 전환
driver.switch_to.frame('iframe_id')  # 'iframe_id'를 해당 iframe의 ID로 수정하세요

# 요소 찾기
element = driver.find_element(By.ID, 'element-inside-iframe-id')
print(element.text)

# 원래 컨텐츠로 되돌아오기
driver.switch_to.default_content()

마무리

이 블로그 글에서는 Selenium 사용 시 자주 발생하는 'Unable to locate element' 오류와 그 해결 방법에 대해 알아보았습니다. 올바른 선택자를 사용하고, 페이지 로딩을 기다리며, 필요시 iframe으로 전환함으로써 이 문제를 극복할 수 있습니다. 번거로운 오류에 좌절하지 말고, 부딪히는 문제를 해결하면서 성장하는 과정이라 생각하세요!

반응형