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 saudriver.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.