Handle Cookies on website using Selenium

Anh Tester chia sẻ cho các bạn cách sử dụng Cookies trên website với Selenium để dùng cho case Login không cần nhập lại thông tin, chỉ cần add cookies đã từng login vào là được.

Anh Tester sử dụng code Selenium với Java. Các bạn dùng ngôn ngữ khác chỉnh lại cho phù hợp nhen.

private static String cookiesCurrent;

@Test(priority = 1)
public void testGetCookies() {
    driver.get("https://rise.fairsketch.com/signin");
    driver.findElement(By.xpath("//button[normalize-space()='Sign in']")).click();
    sleep(5);
    //Get cookies current by name
    cookiesCurrent = driver.manage().getCookieNamed("ci_session").getValue();
    System.out.println("Current Cookies: " + cookiesCurrent);
}

@Test(priority = 2)
public void testAddCookies() {
    driver.get("https://rise.fairsketch.com/signin");
    // Add the cookie into current browser context (cookiesCurrent)
    System.out.println("Get Current Cookies: " + cookiesCurrent);
    driver.manage().addCookie(new Cookie("ci_session", cookiesCurrent));
    sleep(3);
    driver.navigate().refresh();
    sleep(5);
}​


Handle Cookies on website using Selenium | Anh Tester

Cách sử dụng Cookies trên website với Selenium để sử dụng phiên đăng nhập

- Bước 1: Đầu tiên chúng ta cần Login với thông tin đầy đủ để lấy Cookie đã đăng nhập dùng cho các case sau.

Handle Cookies on website using Selenium | Anh Tester

private static String cookiesCurrent;

@Test(priority = 1)
public void testGetCookies() {
    driver.get("https://rise.fairsketch.com/signin");
    driver.findElement(By.xpath("//button[normalize-space()='Sign in']")).click();
    sleep(5);
    //Get cookies current by name
    cookiesCurrent = driver.manage().getCookieNamed("ci_session").getValue();
    System.out.println("Current Cookies: " + cookiesCurrent);
}​


Hiện tại dùng hàm getCookieNamed nghĩa là lấy giá trị cookies theo tên key.

Các bạn xem thêm các hàm tại đây

- Bước 2: Lấy giá trị cookie theo tên và lưu vào một biến toàn cục nào đó (cookiesCurrent)

Chổ này tạm thời An lưu vào biến toàn cục. Nhưng về lâu dài thì các bạn nên lưu nó vào file excel, file txt hay properties gì đó để nó không bị mất và dễ dùng cho sau này ở những chổ khác.

- Bước 3: Sử dụng lại cookies trên và add vào website sau khi đi đến website đó

@Test(priority = 2)
public void testAddCookies() {
    driver.get("https://rise.fairsketch.com/signin");
    // Add the cookie into current browser context (cookiesCurrent)
    System.out.println("Get Current Cookies: " + cookiesCurrent);
    driver.manage().addCookie(new Cookie("ci_session", cookiesCurrent));
    sleep(3);
    driver.navigate().refresh();
    sleep(5);
}​

Hàm add cookie theo cấu trúc (key, value)

driver.manage().addCookie(new Cookie("ci_session", cookiesCurrent));

Tại Test thứ 2 thì chúng ta chỉ cần Add cookie vào và nhấn F5 hay Refresh lại trang là thông tin đã hiển thị lên đã đăng nhập với chính account trước đó mà mình đã lấy cookie của nó add vào.

Quá tiện chứ hả. Case này dùng cho các trường hợp kiểm tra phiên đăng nhập hoặc cookies sinh ra đúng không và thời hạn cụ thể như nào, có đúng với các quyền hạn hay không.

Handle Cookies on website using Selenium | Anh Tester


Source code on GitHub:
https://github.com/anhtester/NewFeatureSelenium4/blob/main/src/test/java/AddCookies.java
  • Anh Tester

    Đường dẫu khó chân vẫn cần bước đi
    Đời dẫu khổ tâm vẫn cần nghĩ thấu