Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Xóa Cookie trình duyệt với Selenium WebDriver Java

Selenium cung cấp API quản lý cookie qua driver.manage(). Có hai cách chính: xóa cookie theo tên và xóa tất cả cookie.

1. Xóa cookie theo tên

driver.manage().deleteCookieNamed("cookie_name");

2. Xóa tất cả cookie của domain hiện tại

driver.manage().deleteAllCookies();

Ví dụ: Thêm, lấy, xóa cookie theo tên

import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.Set;

public class DeleteCookieByName {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        
        try {
            driver.get("https://www.example.com");
            
            // Thêm cookie
            driver.manage().addCookie(new Cookie("test", "selenium"));
            driver.manage().addCookie(new Cookie("subject", "Java"));
            
            // Lấy và in tất cả cookie
            Set cookies = driver.manage().getCookies();
            System.out.println("Cookie trước khi xóa:");
            for (Cookie ck : cookies) {
                System.out.println(ck.getName() + " = " + ck.getValue());
            }
            
            // Xóa cookie tên "test"
            driver.manage().deleteCookieNamed("test");
            
            // Kiểm tra lại
            cookies = driver.manage().getCookies();
            System.out.println("\nCookie sau khi xóa 'test':");
            for (Cookie ck : cookies) {
                System.out.println(ck.getName() + " = " + ck.getValue());
            }
            System.out.println("Số lượng: " + cookies.size());
        } finally {
            driver.quit();
        }
    }
}

Ví dụ: Xóa tất cả cookie

public class DeleteAllCookies {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();
        
        try {
            driver.get("https://www.example.com");
            
            // Thêm cookie
            driver.manage().addCookie(new Cookie("user", "john"));
            driver.manage().addCookie(new Cookie("session", "abc123"));
            
            System.out.println("Số cookie trước: " + driver.manage().getCookies().size());
            
            // Xóa TẤT CẢ
            driver.manage().deleteAllCookies();
            
            System.out.println("Số cookie sau: " + driver.manage().getCookies().size()); // 0
        } finally {
            driver.quit();
        }
    }
}

Lưu ý quan trọng

  • Domain scope: deleteAllCookies() chỉ xóa cookie của domain hiện tại (domain của URL đang mở). Không xóa được cookie của domain khác.
  • HttpOnly/Secure: Selenium không thể truy cập/xóa cookie HttpOnly (do bảo mật trình duyệt).
  • Trước khi test: Thường gọi deleteAllCookies() ngay sau driver.get() để đảm bảo trạng thái sạch.
  • Cookie builder (Selenium 4): Dùng new Cookie.Builder("name", "value").domain(".example.com").build() để tạo cookie chi tiết hơn.

Ứng dụng thực tế

  • Test logout: xóa session cookie → verify redirect login.
  • Test "Remember me": thêm cookie trước → reload → verify auto-login.
  • Chạy test song song: mỗi thread dùng profile/cookie riêng biệt.