본문 바로가기
Python/Selenium

파이썬 Selenium NoSuchElementException

by PySun 2023. 8. 10.
반응형

NoSuchElementException는 요소를 찾지 못할 때 발생하는 오류로, 웹 페이지가 변경되거나 요소의 위치가 변경되어 해당 요소를 찾지 못할 때 발생할 수 있습니다. 예시 코드와 해결 방법에 대해 설명하겠습니다.

예시 코드:

아래 예시 코드는 Google 검색 페이지에서 존재하지 않는 요소를 찾는 상황으로 NoSuchElementException가 발생할 수 있습니다.

from selenium import webdriver

driver = webdriver.Chrome('path/to/chromedriver')

# Google 검색 페이지 접속
driver.get('https://www.google.com')

# 존재하지 않는 요소 찾기
try:
    element = driver.find_element_by_css_selector('.nonexistent-element')
    print(element.text)
except NoSuchElementException as e:
    print("요소를 찾지 못했습니다.")
finally:
    # 브라우저 종료
    driver.quit()

해결 방법:

NoSuchElementException가 발생할 때, 다음과 같은 방법으로 해결할 수 있습니다.

 

예외 처리하기:

try-except 구문을 사용하여 예외를 처리하여 프로그램이 오류에 안전하게 대응하도록 합니다. NoSuchElementException가 발생할 경우, 프로그램은 해당 예외를 처리하고 다음 동작을 계속 수행합니다.

from selenium import webdriver

driver = webdriver.Chrome('path/to/chromedriver')

# Google 검색 페이지 접속
driver.get('https://www.google.com')

# 존재하지 않는 요소 찾기
try:
    element = driver.find_element_by_css_selector('.nonexistent-element')
    print(element.text)
except NoSuchElementException as e:
    print("요소를 찾지 못했습니다.")
finally:
    # 브라우저 종료
    driver.quit()

[Python/파이썬 기초] - 파이썬 예외처리 (try, except, finally)

요소가 나타날 때까지 대기:

NoSuchElementException가 발생하는 경우, 요소가 아직 로드되지 않았을 수 있습니다. 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('path/to/chromedriver')

# Google 검색 페이지 접속
driver.get('https://www.google.com')

# 존재하지 않는 요소 찾기
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, '.nonexistent-element'))
    )
    print(element.text)
except NoSuchElementException as e:
    print("요소를 찾지 못했습니다.")
finally:
    # 브라우저 종료
    driver.quit()

[Python/Selenium] - Selenium 웹 페이지 대기

다른 선택자 사용하기:

NoSuchElementException가 발생하는 경우, 요소를 찾는데 사용한 선택자가 정확하지 않을 수 있습니다. 다른 선택자를 사용하여 요소를 찾아보고 NoSuchElementException를 회피할 수 있습니다.

from selenium import webdriver

driver = webdriver.Chrome('path/to/chromedriver')

# Google 검색 페이지 접속
driver.get('https://www.google.com')

# 다른 선택자로 요소 찾기
try:
    element = driver.find_element_by_xpath('//div[@class="different-class"]')
    print(element.text)
except NoSuchElementException as e:
    print("요소를 찾지 못했습니다.")
finally:
    # 브라우저 종료
    driver.quit()

[Python/Selenium] - Selenium 선택자 사용

NoSuchElementException가 발생할 경우 위의 방법 중 하나를 적절히 선택하여 예외를 처리하고, 프로그램이 안정적으로 동작하도록 합니다. 웹 페이지의 변경에 유연하게 대응하기 위해서는 요소를 찾는 방법을 최적화하고, 요소가 로드될 때까지 기다리는 기술을 잘 활용하는 것이 중요합니다.

반응형