Selenium WebDriver มีเมธอดสำหรับจัดการ Cookies 2 แบบหลัก:
deleteCookieNamed("name")- ลบ cookie ตามชื่อdeleteAllCookies()- ลบ cookies ทั้งหมดของ domain ปัจจุบัน
Syntax
// ลบ cookie เฉพาะตัว
driver.manage().deleteCookieNamed("cookie_name");
// ลบ cookies ทั้งหมด
driver.manage().deleteAllCookies();
ตัวอย่างที่ 1: ลบ Cookie ตามชื่อ
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.Set;
import java.util.concurrent.TimeUnit;
public class DeleteCookieByName {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://www.tutorialspoint.com/index.htm");
try {
// เพิ่ม cookie ทดสอบ
Cookie cookie1 = new Cookie("test", "selenium");
Cookie cookie2 = new Cookie("subject", "Java");
driver.manage().addCookie(cookie1);
driver.manage().addCookie(cookie2);
// ดู cookies ก่อนลบ
Set cookiesBefore = driver.manage().getCookies();
System.out.println("Cookies before delete: " + cookiesBefore.size());
for (Cookie c : cookiesBefore) {
System.out.println("Name: " + c.getName() + ", Value: " + c.getValue());
}
// ลบ cookie ชื่อ "test"
driver.manage().deleteCookieNamed("test");
// ดู cookies หลังลบ
Set cookiesAfter = driver.manage().getCookies();
System.out.println("\nCookies after delete: " + cookiesAfter.size());
for (Cookie c : cookiesAfter) {
System.out.println("Name: " + c.getName() + ", Value: " + c.getValue());
}
} finally {
driver.quit();
}
}
}
ตัวอย่างที่ 2: ลบ Cookies ทั้งหมด
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.Set;
import java.util.concurrent.TimeUnit;
public class DeleteAllCookies {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
driver.get("https://www.tutorialspoint.com/index.htm");
try {
// เพิ่ม cookie ทดสอบ
driver.manage().addCookie(new Cookie("test", "selenium"));
driver.manage().addCookie(new Cookie("subject", "Java"));
// ดู cookies ก่อนลบ
Set cookiesBefore = driver.manage().getCookies();
System.out.println("Cookies before delete: " + cookiesBefore.size());
// ลบ cookies ทั้งหมด
driver.manage().deleteAllCookies();
// ดู cookies หลังลบ
Set cookiesAfter = driver.manage().getCookies();
System.out.println("Cookies after delete: " + cookiesAfter.size()); // ควรเป็น 0
} finally {
driver.quit();
}
}
}
เมธอด Cookie อื่นๆ ที่ควรรู้
| เมธอด | คำอธิบาย |
|---|---|
getCookies() | ดึง cookies ทั้งหมดของ domain ปัจจุบัน (return Set<Cookie>) |
getCookieNamed("name") | ดึง cookie ตามชื่อ (return Cookie หรือ null) |
addCookie(Cookie) | เพิ่ม cookie (ต้องอยู่บน domain เดียวกัน) |
deleteCookie(Cookie) | ลบ cookie โดยส่ง object Cookie เข้าไป |
deleteCookieNamed("name") | ลบ cookie ตามชื่อ |
deleteAllCookies() | ลบ cookies ทั้งหมดของ domain ปัจจุบัน |
สร้าง Cookie Object
// ขั้นพื้นฐาน
Cookie cookie = new Cookie("name", "value");
// กำหนดเพิ่มเติม
Cookie cookie = new Cookie.Builder("name", "value")
.domain(".example.com") // domain (ขึ้นต้นด้วย . สำหรับ subdomain)
.path("/") // path
.expiresOn(java.util.Date) // วันหมดอายุ
.isSecure(true) // HTTPS only
.isHttpOnly(true) // ไม่อ่านได้จาก JavaScript
.build();
Best Practices
- ลบ cookies ก่อนเริ่ม test ใหม่ เพื่อให้สถานะสะอาด (clean state)
- ใช้
deleteAllCookies()ใน @BeforeMethod หรือ @BeforeEach - จำได้ว่า deleteAllCookies() ลบเฉพาะ domain ปัจจุบัน ไม่ลบ cross-domain cookies