Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ล้าง Cookies ของเบราว์เซอร์ด้วย Selenium WebDriver ใน Java

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