Xử lý và làm việc với Cookies trong Selenium Webdriver
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.
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.
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:\\Program\\Firefox\\geckodriver.exe"); FirefoxOptions options = new FirefoxOptions(); options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.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:
- Thao tác Mouse hover trong Selenium Webdriver
- Tìm hiểu về xác thực và phân quyền trong ứng dụng
- Javascript: Sự khác nhau giữa Cookie, localStorage và sessionStorage
Xem thêm Việc làm IT hấp dẫn trên TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS