Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Selenium WebDriver Java 바인딩으로 브라우저 쿠키 삭제하는 방법

웹 자동화 테스트를 진행하다 보면 세션이나 로그인 상태 초기화 등을 위해 브라우저에 저장된 쿠키를 제거해야 하는 경우가 자주 발생합니다. 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());
   }
}

실행 결과

Selenium WebDriver Java 바인딩으로 브라우저 쿠키 삭제하는 방법