1. 셀레니움 "모바일 환경"에서 테스트하는 2가지 대표 방법
① 데스크톱 브라우저에서 User-Agent와 창 크기를 모바일로 변경
- 가장 쉽고 많이 쓰는 방식
- 크롬 브라우저의 모바일 디바이스 에뮬레이션(User-Agent/윈도우 사이즈/터치 등) 기능 활용
예제 코드:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--window-size=390,844") # 아이폰14 Pro 크기
chrome_options.add_argument("--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1")
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://tkglobal.melon.com/main/index.htm?langCd=EN")
# 이하 동일하게 자동화 동작 (클릭, 입력, 텍스트 확인 등)
# ex) driver.find_element(...)
② Appium 등 모바일 자동화 툴 연동 (실디바이스/에뮬레이터)
- 실제 안드로이드/iOS 기기에서 브라우저 자동화를 원할 때 Appium을 사용
- Appium을 별도 설치해야 하며, 셀레니움 코드와 거의 비슷함
- 회사/조직에 실기기 테스트 환경이나 클라우드 디바이스팜이 있으면 이 방법도 추천
2. 모바일웹 셀레니움 자동화 핵심 요약
User-Agent 변경 | 크롬 옵션에서 모바일 UA와 해상도 주면 반응형 동작 |
창 크기 조절 | 모바일 해상도(예: 375x812, 390x844 등) 지정 |
모바일 UI 요소 확인 | 모바일에서만 보이는 메뉴, 햄버거버튼, 고정메뉴 등 검증 |
터치/드래그/스크롤 | 셀레니움의 액션체인, execute_script 등 활용 가능 |
3. 팁
- 모바일에서만 보이는 메뉴(예: 햄버거, 플로팅 버튼 등)는 css selector, xpath로 위치를 잡아서 동작 확인
- 모바일 메뉴/탭/스크롤/슬라이드 등도 셀레니움의 액션체인/execute_script로 대부분 구현 가능
- 반응형 웹 사이트의 뷰포트별 시나리오도 반복 실행(해상도, UA 조합만 바꿔서 테스트)
4. 불가/제한
- 진짜 "네이티브 앱"의 자동화는 Appium 등 별도 툴 필요
- 모바일 브라우저별 렌더링 차이(안드로이드, iOS Safari)는 실제 디바이스에서 확인해야 100% 동일
- GPS/카메라/OS팝업 등은 셀레니움 한계 있음
정리
- User-Agent/윈도우 사이즈 옵션을 주면 모바일웹 QA 자동화 가능
- Appium 연동시 실제 기기에서도 유사하게 가능
- 메뉴/버튼/모바일 전용 컴포넌트 등도 코드에서 클릭/확인/스크롤 모두 지원
동일한 테스트케이스(TC)를 웹(PC)와 모바일웹 환경 모두에서 셀레니움으로 동시에(한 번에) 실행하는 것도 충분히 가능
구현 방식
1. 테스트 케이스 함수/클래스 재사용
- 테스트 함수/로직은 공통으로 두고
- 실행 환경(옵션: 데스크톱 or 모바일)만 다르게 driver를 생성
2. 실행 환경별로 브라우저 세션을 각각 띄움
- 각 환경(driver)에 맞는 옵션만 다르게 줘서 동시에(혹은 순차적으로) 실행
3. 병렬 실행 도구 활용 가능
- pytest-xdist(병렬), 멀티프로세싱 등 활용해 동시에 여러 환경에서 돌릴 수 있음
실무 적용팁
- 여러 해상도, 여러 UA, 여러 브라우저 모두 "드라이버 옵션만 다르게" 지정해서 무한 확장 가능
- 테스트 결과 집계/리포트 등도 환경구분 필드(PC/Mobile 등)만 추가하면 됨
- 코드 재사용/유지보수에 매우 유리
반응형
'Web.IT.Mobile > QA 자동화' 카테고리의 다른 글
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 |
Software Testing& Quality Report (소프트웨어 테스팅 & 품질 리포트) - 3RD EDITION by Testrail 테스트레일 (0) | 2024.05.23 |
댓글