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/브라우저 자체 제어가 필요할 수 있음
반응형
'Web.IT.Mobile > QA 자동화' 카테고리의 다른 글
여러 케이스를 수행시키고 싶을 때의 방법들 (1) | 2025.07.24 |
---|---|
셀레니움(Selenium)에서 “클릭할 요소”를 찾자 (0) | 2025.07.24 |
pytest plug-ins (0) | 2025.07.20 |
멀티 브라우저/멀티 환경 파라미터라이즈(Parametrize) (0) | 2025.07.20 |
pytest 입문 로드맵 (0) | 2025.07.20 |
TestNG vs pytest 기능 차이 (0) | 2025.07.20 |
셀레니움 모바일환경 테스트 방법 (0) | 2025.07.19 |
댓글