파이썬 Selenium 로컬스토리지 세션스토리지 조작 방법 execute_script 활용
🚀 Selenium 중급 활용법 로컬스토리지와 세션스토리지 접근으로 자동화 레벨 업하기
웹 자동화를 하다 보면 단순히 버튼 클릭이나 텍스트 입력을 넘어서 브라우저 내부의 저장소를 다뤄야 할 때가 많습니다.
특히 로그인 상태 유지, 사용자 환경 설정, 테스트 데이터 확인 등을 위해 localStorage와 sessionStorage를 조작해야 하는 경우가 생기죠.
이때 Selenium의 execute_script() 메서드를 활용하면 자바스크립트 명령을 직접 실행해 원하는 데이터를 읽거나 수정할 수 있습니다.
많은 개발자와 테스터들이 이 기능을 통해 반복되는 로그인 과정을 건너뛰거나, 사용자 맞춤 데이터를 빠르게 세팅해 시간을 크게 절약하고 있습니다.
이번 글에서는 파이썬 Selenium 환경에서 로컬스토리지와 세션스토리지를 조작하는 실전 활용법을 정리했습니다.
초보 단계를 벗어나 조금 더 효율적인 테스트와 자동화를 원하는 분들에게 꼭 필요한 지식이 될 것입니다.
또한 단순한 코드 예제뿐 아니라 실제 업무에서 어떻게 적용할 수 있는지, 주의할 점은 무엇인지도 함께 다루겠습니다.
📋 목차
🔑 Selenium에서 로컬스토리지 접근하기
웹 브라우저의 localStorage는 사이트에 접속할 때 사용자 설정이나 인증 토큰과 같은 정보를 보관하는 공간입니다.
쿠키와 달리 서버로 전송되지 않고 클라이언트에만 저장되므로, 테스트 환경에서 로그인 상태를 재현하거나 특정 데이터를 미리 주입할 때 유용합니다.
Selenium에서는 자바스크립트 실행 기능인 execute_script()를 사용하여 로컬스토리지 값을 읽고 쓰는 것이 가능합니다.
예를 들어, 현재 저장된 값을 확인하려면 다음과 같이 작성할 수 있습니다.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# localStorage에 값 저장
driver.execute_script("window.localStorage.setItem('token', 'abc123');")
# localStorage에서 값 읽기
token = driver.execute_script("return window.localStorage.getItem('token');")
print(token) # abc123 출력
위 코드처럼 setItem()과 getItem() 메서드를 그대로 실행할 수 있습니다.
이는 실제 브라우저 환경과 동일하게 동작하기 때문에, 페이지를 새로고침하더라도 데이터가 유지됩니다.
- 💾로그인 토큰을 저장해 자동 로그인 구현
- ⚙️사용자 맞춤 설정을 미리 삽입해 테스트 환경 준비
- 🔍테스트 중 특정 값이 잘 저장되었는지 검증
💡 TIP: localStorage는 페이지 전체에서 공유되므로, 여러 테스트 케이스를 실행할 때 초기화가 필요하다면 clear() 메서드를 활용해 주는 것이 좋습니다.
📂 세션스토리지 데이터 다루는 방법
로컬스토리지와 비슷하지만, sessionStorage는 브라우저 탭이 닫히면 데이터가 사라지는 특징이 있습니다.
따라서 로그인 직후 필요한 임시 토큰, 특정 페이지 이동 중 필요한 상태 정보 등을 보관하는 데 활용됩니다.
Selenium에서는 동일하게 execute_script()를 이용하여 세션스토리지를 읽고 쓸 수 있습니다.
세션스토리지 값 추가와 조회는 아래와 같이 작성할 수 있습니다.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# sessionStorage에 데이터 저장
driver.execute_script("window.sessionStorage.setItem('step', 'completed');")
# sessionStorage에서 값 가져오기
step = driver.execute_script("return window.sessionStorage.getItem('step');")
print(step) # completed 출력
세션스토리지는 탭 단위로 독립적으로 관리되므로, 동일한 사이트라도 새로운 탭을 열면 값이 공유되지 않습니다.
이 점은 여러 사용자 세션을 동시에 시뮬레이션할 때 큰 장점으로 작용합니다.
💬 sessionStorage는 브라우저 탭을 닫으면 값이 초기화된다는 특징을 반드시 고려해야 합니다. 테스트 환경을 재현할 때 이 차이를 이해하지 못하면 오류가 발생할 수 있습니다.
- 📝사용자 프로세스 진행 단계 저장
- ⏳짧은 세션 테스트 시 효율적인 상태 관리
- 🔒보안상 서버로 전송하지 않아야 하는 민감 데이터 임시 저장
⚠️ 주의: sessionStorage는 사용자가 탭을 닫으면 데이터가 즉시 삭제되므로, 장기 보관해야 하는 정보에는 절대 사용해서는 안 됩니다.
⚙️ execute_script 활용 코드 예제
Selenium에서 execute_script() 메서드는 자바스크립트 코드를 직접 실행해 브라우저 내부 상태를 제어할 수 있는 핵심 기능입니다.
이를 활용하면 localStorage와 sessionStorage 모두를 자유롭게 다룰 수 있습니다.
아래는 가장 자주 활용되는 예제 코드 모음입니다.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# 1. localStorage 전체 조회
all_local = driver.execute_script("return window.localStorage;")
print(all_local)
# 2. 특정 localStorage 키 삭제
driver.execute_script("window.localStorage.removeItem('token');")
# 3. sessionStorage 전체 조회
all_session = driver.execute_script("return window.sessionStorage;")
print(all_session)
# 4. sessionStorage 초기화
driver.execute_script("window.sessionStorage.clear();")
이처럼 execute_script는 원하는 자바스크립트 명령을 문자열로 넣어 실행하기만 하면 되므로, 단순한 데이터 조작에서부터 페이지 내 동적 동작 제어까지 폭넓게 활용할 수 있습니다.
🧪 디버깅과 테스트 자동화 활용
테스트 코드 작성 시 매번 로그인 과정을 거치는 것은 불필요하게 시간이 소요됩니다.
이럴 때 로컬스토리지에 JWT 토큰을 직접 저장해 두면 곧바로 인증된 상태로 진입할 수 있습니다.
또한 세션스토리지를 통해 특정 UI 상태를 미리 세팅해 두면 테스트 환경을 보다 빠르고 안정적으로 구축할 수 있습니다.
| 활용 방법 | 설명 |
|---|---|
| 자동 로그인 | 토큰을 로컬스토리지에 삽입해 로그인 단계를 건너뜀 |
| UI 상태 재현 | 세션스토리지에 상태 값을 저장해 특정 화면 상황을 빠르게 테스트 |
💎 핵심 포인트:
execute_script를 활용하면 실제 사용자가 입력하지 않아도 브라우저 내부 데이터를 원하는 형태로 즉시 조작할 수 있습니다. 이는 테스트 자동화의 속도를 크게 향상시키는 비밀 무기와 같습니다.
🧩 실제 업무에서 활용 가능한 시나리오
단순한 코드 실험을 넘어, localStorage와 sessionStorage 조작은 실제 프로젝트에서도 다양한 방식으로 활용됩니다.
테스트 자동화뿐만 아니라 운영 환경에서의 품질 검증, QA 작업, 개발 편의성 향상에도 도움을 줍니다.
🔐 로그인 프로세스 최적화
매번 아이디와 비밀번호를 입력하는 대신 토큰을 로컬스토리지에 직접 넣어두면, 테스트 케이스 실행 속도가 비약적으로 빨라집니다.
특히 여러 테스트를 병렬로 실행할 때 로그인 과정을 생략하는 것은 필수적인 시간 절약 전략입니다.
🛠️ 사용자 환경 세팅 자동화
웹 애플리케이션에는 다국어 설정, 다크 모드, 최근 검색 기록 등 다양한 사용자 환경이 저장됩니다.
이러한 값들을 로컬스토리지에 삽입하면, 특정 시나리오에 맞는 UI를 빠르게 재현할 수 있습니다.
- 🚀자동 로그인으로 테스트 실행 시간 단축
- 🌍다국어 설정을 주입해 다국적 서비스 UI 검증
- 🎨다크 모드, 폰트 크기 등 UI 개인화 상태 재현
📊 QA 및 디버깅에서의 활용
QA 팀에서는 특정 상태를 인위적으로 재현해 오류를 재현하는 경우가 많습니다.
예를 들어 장바구니 데이터나 결제 단계 플래그를 세션스토리지에 직접 삽입하면 복잡한 단계를 거치지 않고도 즉시 문제 상황을 확인할 수 있습니다.
💡 TIP: 자동화 스크립트를 설계할 때는 실제 사용자가 어떤 흐름으로 데이터를 생성하는지 이해한 뒤 스토리지를 조작해야 예기치 못한 오류를 줄일 수 있습니다.
⚠️ 보안과 안정성에서 주의할 점
로컬스토리지와 세션스토리지를 Selenium으로 조작하는 것은 강력하지만, 동시에 보안과 안정성 문제를 수반할 수 있습니다.
특히 민감한 정보가 저장될 경우 잘못된 코드 실행이나 접근 권한 문제로 인해 데이터 유출 위험이 발생할 수 있습니다.
🔒 민감 정보 저장 위험성
로컬스토리지에 JWT 토큰이나 인증 키와 같은 민감 정보를 저장하는 경우, 브라우저 개발자 도구를 통해 누구나 쉽게 접근할 수 있습니다.
따라서 테스트 목적이라면 문제가 없지만, 운영 환경에서는 보안 위험을 고려해 반드시 서버 세션이나 보안 쿠키를 활용해야 합니다.
⚡ 데이터 일관성 문제
스토리지를 직접 조작하다 보면 애플리케이션이 예상하지 못한 상태에 빠질 수 있습니다.
예를 들어 로그인 상태가 아닌데 토큰만 존재하거나, 특정 페이지에 필요한 데이터가 없는 상황이 생기면 앱이 비정상적으로 동작할 수 있습니다.
⚠️ 주의: 테스트 코드에서 스토리지를 조작할 때는 항상 초기화 단계를 거쳐야 합니다. 이전 테스트에서 남은 데이터가 새로운 테스트에 영향을 미칠 수 있기 때문입니다.
- 🧹테스트 시작 전 반드시 clear() 실행
- 🕵️민감 정보는 스토리지에 저장하지 않기
- 🔄실제 사용자 흐름과 일치하는 데이터 구조 유지
💎 핵심 포인트:
스토리지 조작은 테스트 효율성을 크게 높이지만, 보안과 일관성을 고려하지 않으면 오히려 문제를 만들 수 있습니다. 항상 초기화와 데이터 검증 과정을 포함하는 것이 안전합니다.
❓ 자주 묻는 질문 (FAQ)
Selenium에서 localStorage와 sessionStorage의 차이는 무엇인가요?
execute_script 대신 다른 방법으로 스토리지를 조작할 수 있나요?
스토리지 조작 시 보안 문제가 발생할 수 있나요?
localStorage 값을 변경했는데 적용되지 않는 이유는 무엇인가요?
여러 탭에서 localStorage와 sessionStorage는 어떻게 다르게 동작하나요?
스토리지 값을 테스트할 때 초기화는 어떻게 하나요?
Selenium Grid 환경에서도 동일하게 사용할 수 있나요?
스토리지 조작 시 디버깅을 쉽게 하는 방법은 무엇인가요?
📝 파이썬 Selenium 스토리지 조작 핵심 정리
이번 글에서는 파이썬 Selenium으로 localStorage와 sessionStorage를 다루는 방법을 단계별로 살펴봤습니다.
execute_script()를 통해 자바스크립트를 직접 실행하면 로그인 토큰 삽입, 사용자 환경 설정, 상태 플래그 저장 등 다양한 자동화 시나리오를 효율적으로 구현할 수 있습니다.
또한 업무 현장에서 QA, 디버깅, 테스트 자동화 속도 향상에 큰 도움이 됩니다.
하지만 보안과 안정성 문제를 간과해서는 안 됩니다.
특히 민감한 정보를 스토리지에 저장하는 것은 운영 환경에서는 적합하지 않으며, 테스트 시에도 초기화와 데이터 검증 절차를 반드시 거쳐야 안전합니다.
즉, 스토리지 조작은 단순 편의 기능이 아니라 올바른 관리와 절제가 필요한 도구라는 점을 기억해야 합니다.
정리하자면, Selenium 중급 단계에서 스토리지를 다루는 능력은 테스트 생산성을 크게 끌어올리는 핵심 역량입니다.
다양한 실전 예제와 주의사항을 참고하여 안전하고 효율적인 자동화를 설계해 보시기 바랍니다.
🏷️ 관련 태그 : Selenium, 파이썬자동화, 웹테스트, localStorage, sessionStorage, QA자동화, 테스트자동화, 브라우저자동화, execute_script, 파이썬Selenium