본문 바로가기
Web.IT.Mobile/QA 자동화

셀레니움에서 팝업창 제어 - 2가지

by sshongs 2025. 7. 24.

1. 자바스크립트 Alert/Confirm/Prompt(경고/확인/입력) 팝업

  • 브라우저의 내장 팝업 (예: alert("메시지"); confirm("확인?"); prompt("입력하세요"))
  • 셀레니움의 switch_to.alert로 제어
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get("https://testpage.com")

# 팝업 뜨는 액션(예: 버튼 클릭)
driver.find_element(By.ID, "btn_alert").click()
time.sleep(1)  # 팝업 대기

# alert 제어
alert = driver.switch_to.alert
print("팝업 메시지:", alert.text)  # 팝업에 표시된 메시지 읽기
alert.accept()   # "확인" 클릭 (OK)
# alert.dismiss() # "취소" 클릭 (Cancel)

# prompt일 경우 입력도 가능
# alert.send_keys("값입력")

 

2. 새 창/새 탭(윈도우) 팝업

  • 새로운 브라우저 창, 팝업, 탭이 뜨는 경우
  • 핸들(Handle) 전환으로 제어
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

driver = webdriver.Chrome()
driver.get("https://tkglobal.melon.com/main/index.htm?langCd=EN")

# 팝업이 뜨는 버튼 클릭 (예: Business info)
driver.find_element(By.LINK_TEXT, "Business info").click()
time.sleep(2)  # 새 창 대기

# 윈도우 핸들 목록 확인
windows = driver.window_handles
print(windows)
driver.switch_to.window(windows[-1])  # 마지막 열린 창으로 전환

print("팝업창 URL:", driver.current_url)
# 팝업창에서 필요한 작업 (예: 텍스트 추출, 버튼 클릭 등)

# 팝업창 닫기
driver.close()

# 원래 창으로 전환 (보통 첫 번째 창)
driver.switch_to.window(windows[0])

 

3. 정리

팝업 유형 셀레니움 제어 방법 대표 메서드
alert/confirm/prompt driver.switch_to.alert .text, .accept(), .dismiss(), .send_keys()
새 창/팝업/새탭 driver.window_handles, switch_to.window .close(), .current_url 등

 

4. 실무 팁

  • 팝업/새 창 닫은 뒤에는 반드시 원래 창(driver.window_handles[0])으로 복귀해야 함
  • 팝업이 여러 번/동시에 뜨는 경우 각 핸들을 리스트로 저장/관리
  • 일부 광고/보안 팝업 등은 OS/브라우저 자체 제어가 필요할 수 있음
반응형

댓글