본문 바로가기
Python/Selenium

파이썬 Selenium InvalidSelectorException 오류

by PySun 2023. 8. 17.
반응형

InvalidSelectorException은 잘못된 선택자(selector)를 사용할 때 발생하는 예외입니다. 선택자는 요소를 찾는 데 사용되는 표현식이며, 잘못된 선택자를 사용하면 이 예외가 발생할 수 있습니다. 예시 코드와 해결 방법에 대해 설명하겠습니다.

예시 코드:

아래 예시 코드에서는 잘못된 선택자를 사용하여 요소를 찾는 시도를 보여줍니다. 이렇게 잘못된 선택자를 사용하면 InvalidSelectorException이 발생할 수 있습니다.

from selenium import webdriver

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

    # 잘못된 선택자를 사용하여 요소 찾기 시도
    invalid_selector = driver.find_element_by_id('non_existent_id[]')

except InvalidSelectorException as e:
    print("InvalidSelectorException이 발생했습니다:", str(e))
finally:
    # 브라우저 종료
    driver.quit()

해결 방법:

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

올바른 선택자 사용:

올바른 CSS 선택자나 XPath 선택자를 사용하여 요소를 찾도록 합니다. 브라우저의 개발자 도구를 활용하여 정확한 선택자를 확인하고 사용합니다.

# 올바른 선택자 사용 예시
valid_selector = driver.find_element_by_id('existing_id')

[Python/Selenium] - Selenium 요소 정보 가져오기

정규식 사용:

필요한 경우 정규식을 사용하여 선택자를 유연하게 만들 수 있습니다. 이 방법은 선택자가 동적으로 변경되는 경우 유용합니다.

import re

# 정규식을 사용한 선택자 예시
matching_elements = driver.find_elements_by_xpath("//div[contains(@id, 'partial_id')]")

동적 요소 기다리기:

요소가 동적으로 생성되거나 로드되는 경우, WebDriverWait를 사용하여 요소가 나타날 때까지 대기할 수 있습니다.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 동적 요소 기다리기 예시
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, 'dynamic_element_id')))

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

잘못된 선택자를 사용하면 InvalidSelectorException이 발생할 수 있으므로 선택자를 정확하게 확인하고, 필요에 따라 동적 요소 기다림과 같은 방법을 사용하여 예외를 처리하도록 합니다.

반응형