Xử lý và làm việc với Cookies trong Selenium Webdriver

959

Cookies – thành phần vừa nghe đến thì chợt có cảm giác quen thuộc nào đó vừa lướt qua, đảm bảo là ai cũng đã từng ít nhất nghe qua một lần. Thế nên, hôm nay mình sẽ nói về ‘chiếc bánh’ này, và một vài xử lý nó trong các kịch bản automation với Selenium thông qua một số method như add, get và delete cookies.

Kết quả hình ảnh cho cookies web

Cookies là gì?

Cookies là các tập tin được lưu trữ trên máy tính của bạn, nó bao gồm các thông tin của các trang web mà bạn truy cập. Cookies đươc sử dụng để duy trì thông tin trạng thái khi bạn truy cập vào các trang khác nhau trên một website, giúp bạn ghi nhớ các thông tin như đăng ký, đăng nhập, hoặc những thông tin mà bạn đã cung cấp khi truy cập trang web đó.

Cookies lưu trữ thông tin theo các cặp giá trị ‘key-value’. Những thông tin này sẽ được gửi tới trang web, các page tương ứng của trang web đó vào lần tiếp theo bạn truy cập.

  Session, Cookie, Storage đơn giản mà dễ hiểu

  Selenium Webdriver – Xử lý thao tác Drag-Drop

Tại sao cần xử lý Cookies trong automation?

Trong quá trình thực hiện automation, bạn có thể cân nhắc xử lý cookies nếu bạn có một số vấn đề như dưới đây nhé:

1. Trong kịch bản kiểm thử của chúng ta có các yêu cầu đặc biệt nào đó liên quan đến cookies mà cần phải automate, và yêu cầu cần phải validate các giá trị đầu vào của các file cookie.

2. Vì cookie lưu các thông tin đăng nhập của người dùng khi ta đăng nhập vào một website nào đó, do vậy ta có thể tạo và load các file cookies trong quá trình automation. Từ đó có thể bỏ qua một số kịch bản, hoặc một số bước đã được xử lý bởi cookies, giúp ta giảm thiểu thời gian trong việc execute các test case.

Ví dụ đơn giản như này cho dễ hình dung, như chức năng đăng nhập của Google, ta chỉ cần đăng nhập 1 lần, sau đó khi vào các ứng dụng khác của google thì vì cookie đã lưu thông tin của ta rồi, nên ta không cần phải thực hiện đăng nhập tiếp thể có thể truy cập các ứng dụng khác ấy nữa.

Thực ra những lý do trên cũng mang tính chủ quan đối với hai trường hợp điển hình có thể gặp thôi, bạn cũng có thể gặp trong một số trường hợp kiểm thử nào đó khác, những vấn đề mà bạn xác định cần phải xử lý các file cookies thì bạn cứ thế dùng thôi.

Một số method thường dùng với Cookies:

1. Get Cookies

Có hai cách giúp bạn thực hiện get Cookies như sau:

  • getCookieNamed(String cookieName) – Lấy ra một Cookies cụ thể theo name của cookies.
  • getCookies() – Lấy ra tất cả Cookies trong domain hiện tại.
//To fetch a Cookie by name
System.out.println(driver.manage().getCookieNamed(cookieName).getValue());

//To return all the cookies of the current domain
Set<Cookie> cookiesForCurrentURL = driver.manage().getCookies();
for (Cookie cookie : cookiesForCurrentURL) {
    System.out.println(" Cookie Name - " + cookie.getName() 
			+ " Cookie Value - "  + cookie.getValue()));
}

Tham khảo việc làm Java hấp dẫn trên TopDev

2. Add Cookies

  • addCookie(Cookie cookie) – Được sử dụng để add một Cookies cụ thể nào đó vào trong các cookies.
Cookie cookie = new Cookie("cookieName", "cookieValue");
driver.manage().addCookie(cookie);

3. Delete cookies

Với trường hợp xóa cookies, ta có ba cách như dưới đây:

  • deleteCookieNamed(String cookieName) – Xóa một cookie cụ thể nào đó dựa theo name của cookie.
  • deleteCookie(Cookie cookie) – Xóa một cookie ra khỏi cookie jar của trình duyệt, method này sẽ bỏ qua domain của cookie đó.
  • deleteAllCookies() – Method này dùng để xóa tất cả cookies trong domain hiện tại.
//Delete a particular Cookie by name
driver.manage().deleteCookieNamed(cookieName);

//Delete a particular Cookie
driver.manage().deleteCookie(cookie);

//Delete all the Cookies
driver.manage().deleteAllCookies();

Đối với từng yêu cầu trong các trường hợp kịch bản kiểm thử cụ thể bạn có thể sử dụng các method tương ứng. Ngoài ra, các bạn có thể tham khảo các link dưới đây để tìm hiểu chi tiết và cụ thể hơn các ví dụ trong đó nhé, bao gồm cả code tham khảo đó.

Bài viết này nội dung hơn ngắn chút, nhưng mà cũng vi vọng là nó sẽ giúp ích trong việc nắm vững được khung kiến thức cơ bản liên quan đến cookie này. Vì thực tế thì mình mới dùng đến các trường hợp delele cookie thôi ah.

À dưới đây là code super basic của mình để run thử, các bạn có thể tham khảo thêm cũng được ạ:

import java.io.IOException;
import java.util.Set;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;

public class Cookies {
       public static void main(String[] args) throws IOException {

            System.setProperty("webdriver.gecko.driver", "E:ProgramFirefoxgeckodriver.exe");
            FirefoxOptions options = new FirefoxOptions();
            options.setBinary("C:Program Files (x86)Mozilla Firefoxfirefox.exe");
            FirefoxDriver driver = new FirefoxDriver(options);
            driver.get("http://flipkart.com/");
            // we should pass name and value for cookie as parameters
            // In this example we are passing, name=mycookie and value=123456789123          
            Cookie name = new Cookie("mycookie", "123456789123");
            //Add cookie
            driver.manage().addCookie(name);
            // After adding the cookie we will check that by displaying all the cookies.
            Set<Cookie> cookiesList = driver.manage().getCookies();
            for (Cookie getcookies : cookiesList) {
                 System.out.println(getcookies);
             }                             
             /*
              //To delete cookie with cookieName = "__utmb"
              driver.manage().deleteCookieNamed("__utmb");
              //To delete all cookies
               driver.manage().deleteAllCookies();
                */                          
             }
}

Bài viết gốc được đăng tải tại vananhtooo.wordpress.com

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên TopDev