본문 바로가기
Python/Selenium

파이썬 Selenium ElementClickInterceptedException 오류

by PySun 2023. 8. 14.
반응형

ElementClickInterceptedException은 다른 요소가 클릭을 가로채거나 요소가 화면을 벗어난 상태에서 클릭하려고 할 때 발생하는 오류입니다. 예시 코드와 해결 방법에 대해 설명하겠습니다.

예시 코드:

아래 예시 코드는 다른 요소가 클릭을 가로채는 상황에서 ElementClickInterceptedException이 발생할 수 있습니다.

from selenium import webdriver

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

# 요소가 가려진 페이지 접속
driver.get('https://www.example.com')

# 가려진 요소 클릭 시도
try:
    hidden_button = driver.find_element_by_id('hidden-button')
    hidden_button.click()
except ElementClickInterceptedException as e:
    print("요소를 클릭할 수 없습니다.")
finally:
    # 브라우저 종료
    driver.quit()

해결 방법:

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

다른 요소로 스크롤:

다른 요소가 클릭을 가로채는 경우, 해당 요소로 스크롤하여 클릭하려는 요소가 화면에 보이도록 합니다.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

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

# 페이지 접속
driver.get('https://www.example.com')

# 다른 요소로 스크롤하여 클릭하려는 요소가 보이도록 만들기
try:
    target_element = driver.find_element_by_id('target-element')
    driver.execute_script("arguments[0].scrollIntoView(true);", target_element)
    target_element.click()
except ElementClickInterceptedException as e:
    print("요소를 클릭할 수 없습니다.")
finally:
    # 브라우저 종료
    driver.quit()

클릭을 가로채는 요소 제외:

클릭을 가로채는 요소를 제외하고 클릭하려는 요소를 클릭하도록 합니다. 이 때 Actions 클래스를 사용하여 다른 요소를 먼저 클릭하고 클릭하려는 요소를 클릭합니다.

from selenium import webdriver
from selenium.webdriver import ActionChains

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

# 페이지 접속
driver.get('https://www.example.com')

# 클릭을 가로채는 요소와 클릭하려는 요소 제외
try:
    intercepting_element = driver.find_element_by_id('intercepting-element')
    target_element = driver.find_element_by_id('target-element')

    # 다른 요소 클릭
    actions = ActionChains(driver)
    actions.move_to_element(intercepting_element).click().perform()

    # 클릭하려는 요소 클릭
    target_element.click()
except ElementClickInterceptedException as e:
    print("요소를 클릭할 수 없습니다.")
finally:
    # 브라우저 종료
    driver.quit()

JavaScript를 사용하여 클릭:

JavaScript를 사용하여 클릭하려는 요소를 강제로 클릭할 수 있습니다.

from selenium import webdriver

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

# 페이지 접속
driver.get('https://www.example.com')

# JavaScript를 사용하여 클릭 시도
try:
    target_element = driver.find_element_by_id('target-element')
    driver.execute_script("arguments[0].click();", target_element)
except ElementClickInterceptedException as e:
    print("요소를 클릭할 수 없습니다.")
finally:
    # 브라우저 종료
    driver.quit()

ElementClickInterceptedException이 발생하는 경우 위의 방법 중 하나를 적절히 선택하여 예외를 처리하고, 프로그램이 안정적으로 동작하도록 합니다. 클릭을 가로채는 요소를 스크롤하여 요소를 보이도록 하거나 다른 요소로 클릭한 후에 클릭하려는 요소를 클릭하는 방법을 활용할 수 있습니다.

반응형