웹 자동화 테스트를 진행하다 보면 세션이나 로그인 상태 초기화 등을 위해 브라우저에 저장된 쿠키를 제거해야 하는 경우가 자주 발생합니다. Selenium WebDriver는 이를 위해 두 가지 편리한 메서드를 제공합니다.
첫 번째는 deleteCookieNamed 메서드로, 지정한 이름을 가진 특정 쿠키만 삭제합니다. 삭제할 쿠키의 이름은 메서드의 인자로 전달됩니다. 일반적으로 쿠키를 먼저 추가한 후, 조회하고, 마지막으로 삭제하는 순서로 테스트를 진행합니다.
deleteCookieNamed 문법
driver.manage().deleteCookieNamed("foo");두 번째는 deleteAllCookies 메서드로, 현재 도메인에 존재하는 모든 쿠키를 한 번에 삭제합니다. 마찬가지로 쿠키를 추가한 뒤 조회하고, 이어서 삭제하는 방식으로 동작을 확인할 수 있습니다.
deleteAllCookies 문법
driver.manage().deleteAllCookies();
예제 1: deleteCookieNamed로 쿠키 삭제하기
아래 코드는 두 개의 쿠키를 생성하여 추가한 후, 반복문을 통해 각 쿠키의 이름과 값을 출력하고 이름 기준으로 하나씩 삭제하는 예제입니다.
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class DeleteCookiesViaName {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.tutorialspoint.com/index.htm");
// 4초 대기 설정
driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
// 쿠키의 이름과 값 설정
Cookie c = new Cookie("test", "selenium");
Cookie r = new Cookie("subject", "Java");
// 쿠키 추가
driver.manage().addCookie(c);
driver.manage().addCookie(r);
// 쿠키 목록 가져오기
Set<Cookie> ck = driver.manage().getCookies();
// 쿠키 순회하며 정보 출력 및 삭제
for (Cookie cookie : ck) {
System.out.println("쿠키 이름 : " + cookie.getName());
System.out.println("쿠키 값 : " + cookie.getValue());
// 이름 기준으로 쿠키 삭제
driver.manage().deleteCookieNamed(cookie.getName());
}
// 삭제 후 남은 쿠키 개수 확인
Set ch = driver.manage().getCookies();
System.out.println("삭제 후 쿠키 개수 : " + ch.size());
}
}예제 2: deleteAllCookies로 전체 쿠키 삭제하기
다음 코드는 deleteAllCookies를 활용하여 현재 도메인의 모든 쿠키를 한꺼번에 제거하는 예제입니다.
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
public class DeleteCookiesAll {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.tutorialspoint.com/index.htm");
// 4초 대기 설정
driver.manage().timeouts().implicitlyWait(4, TimeUnit.SECONDS);
// 쿠키의 이름과 값 설정
Cookie c = new Cookie("test", "selenium");
Cookie r = new Cookie("subject", "Java");
// 쿠키 추가
driver.manage().addCookie(c);
driver.manage().addCookie(r);
// 쿠키 목록 가져오기
Set<Cookie> ck = driver.manage().getCookies();
// 쿠키 순회하며 정보 출력
for (Cookie cookie : ck) {
System.out.println("쿠키 이름 : " + cookie.getName());
System.out.println("쿠키 값 : " + cookie.getValue());
}
// 모든 쿠키 삭제
driver.manage().deleteAllCookies();
// 삭제 후 남은 쿠키 개수 확인
Set ch = driver.manage().getCookies();
System.out.println("삭제 후 쿠키 개수 : " + ch.size());
}
}실행 결과
