반응형
소개
Selenium을 사용하다보면 'WebDriverException: no such window' 오류가 발생할 수 있습니다. 이 오류는 주로 사용자가 현재 작업 중인 창과 관련된 작업을 시도할 때 나타납니다. 이 글에서는 이 오류의 원인과 몇 가지 해결 방법을 살펴보겠습니다.
에러 발생 예시 코드
먼저, 'WebDriverException: no such window' 오류가 발생할 수 있는 간단한 예시 코드를 살펴볼까요.
from selenium import webdriver
import time
# Chrome 드라이버 초기화
driver = webdriver.Chrome()
# 웹 페이지 열기
driver.get("https://www.example.com")
# 새 창 열기
driver.execute_script("window.open('https://www.google.com', '_blank');")
time.sleep(2)
# 새 창으로 이동하기
driver.switch_to.window("non_existent_window")
에러 해결 방법
1. 현재 열려 있는 창 목록 확인하기
현재 브라우저에 열려 있는 모든 창/탭의 ID를 확인하고, 존재하는 창으로 전환하도록 합니다. 이를 통해 'no such window' 오류를 피할 수 있습니다.
from selenium import webdriver
import time
# Chrome 드라이버 초기화
driver = webdriver.Chrome()
# 웹 페이지 열기
driver.get("https://www.example.com")
# 새 창 열기
driver.execute_script("window.open('https://www.google.com', '_blank');")
time.sleep(2)
# 현재 열려 있는 창 리스트 가져오기
window_handles = driver.window_handles
print(window_handles)
# 첫 번째 창으로 전환
driver.switch_to.window(window_handles[0])
2. 창 삭제 후 전환 피하기
만약 창이 의도치 않게 닫혔거나, 새 창을 제대로 열지 못한 경우가 있다면, 이런 상황을 피하기 위해 창을 닫은 후 전환하지 않도록 합니다.
from selenium import webdriver
import time
# Chrome 드라이버 초기화
driver = webdriver.Chrome()
# 웹 페이지 열기
driver.get("https://www.example.com")
driver.execute_script("window.open('https://www.google.com', '_blank');")
time.sleep(2)
# 현재 열려 있는 창 리스트 가져오기
window_handles = driver.window_handles
# 모든 창 순회하며 열려 있는 창에서만 작업 수행
for window in window_handles:
driver.switch_to.window(window)
print("현재 창:", driver.title)
# 닫고 싶지 않은 창이라면 코멘트를 통해 주석처리 가능합니다.
# driver.close()
마무리
Selenium에서 'WebDriverException: no such window' 오류는 브라우저의 창 전환이 잘못된 경우 발생할 수 있습니다. 현재 열려 있는 창 목록을 확인하거나, 창을 닫은 후 전환 시 주의사항을 늘 기억하세요. 추가적으로, 창이나 탭을 관리할 때는 항상 인지하고 있어야 할 필요가 있습니다. 이를 통해 원활한 웹 자동화 작업이 가능해질 것입니다.
반응형
'Python > Selenium' 카테고리의 다른 글
Key 클래스와 키보드 입력 자동화 소개 (2) | 2025.02.06 |
---|---|
키 입력 자동화를 위한 Selenium Keys 사용법 (0) | 2025.02.06 |
Selenium WebDriverException: chrome not reachable 오류 해결하기 (0) | 2025.02.05 |
Selenium WebDriverException: Element not visible 오류 해결하기 (0) | 2025.02.05 |
Selenium에서 오버플로우 상황 다루기 (0) | 2025.02.05 |