Xử lý cookie trong Selenium WebDriver

Mục lục:

Anonim

Cookie HTTP bao gồm thông tin về người dùng và sở thích của họ. Nó lưu trữ thông tin bằng cặp khóa-giá trị. Nó là một phần dữ liệu nhỏ được gửi từ Ứng dụng Web và được lưu trữ trong Trình duyệt Web, trong khi người dùng đang duyệt trang web đó.

Nhấp vào đây để tìm hiểu về thử nghiệm cookie.

Trong hướng dẫn này, chúng ta sẽ học -

  • Lệnh truy vấn Selenium cho cookie
  • Tại sao phải xử lý Cookie trong Selenium?
  • Demo: Xử lý cookie trong Selenium.
  • Bước 1) Lưu trữ thông tin cookie.
  • Bước 2) Sử dụng cookie được lưu trữ để đăng nhập vào ứng dụng.

Lệnh truy vấn Selenium cho cookie

Trong Selenium Webdriver, chúng tôi có thể truy vấn và tương tác với cookie bằng phương thức tích hợp bên dưới:

driver.manage (). getCookies (); // Trả về Danh sách tất cả Cookiedriver.manage (). getCookieNamed (arg0); // Trả lại cookie cụ thể theo têndriver.manage (). addCookie (arg0); // Tạo và thêm cookiedriver.manage (). deleteCookie (arg0); // Xóa cookie cụ thểdriver.manage (). deleteCookieNamed (arg0); // Xóa cookie cụ thể theo Têndriver.manage (). deleteAllCookies (); // Xóa tất cả cookie

Tại sao phải xử lý Cookie trong Selenium?

Mỗi cookie được liên kết với tên, giá trị, miền, đường dẫn, thời hạn sử dụng và trạng thái xem nó có an toàn hay không. Để xác thực máy khách, máy chủ phân tích cú pháp tất cả các giá trị này trong cookie.

Khi Kiểm tra ứng dụng web bằng trình điều khiển web selen, bạn có thể cần tạo, cập nhật hoặc xóa cookie.

Ví dụ, khi tự động hóa Ứng dụng Mua sắm Trực tuyến, nhiều bạn cần phải tự động hóa các kịch bản thử nghiệm như đặt hàng, Xem giỏ hàng, Thông tin thanh toán, xác nhận đơn hàng, v.v.

Nếu cookie không được lưu trữ, bạn sẽ cần thực hiện hành động đăng nhập mọi lúc trước khi thực hiện các tình huống kiểm tra được liệt kê ở trên. Điều này sẽ làm tăng nỗ lực viết mã và thời gian thực thi của bạn.

Giải pháp là lưu trữ cookie trong một Tệp. Sau đó, truy xuất các giá trị của cookie từ tệp này và thêm vào đó phiên trình duyệt hiện tại của bạn. Do đó, bạn có thể bỏ qua các bước đăng nhập trong mọi Trường hợp kiểm tra vì phiên trình điều khiển của bạn có thông tin này trong đó.

Máy chủ ứng dụng hiện coi phiên trình duyệt của bạn là đã được xác thực và trực tiếp đưa bạn đến URL mà bạn yêu cầu.

Demo: Xử lý cookie trong Selenium.

Chúng tôi sẽ sử dụng http://demo.guru99.com/test/cookie/selenium_aut.php cho mục đích demo của chúng tôi.

Đây sẽ là một quy trình gồm 2 bước.

Bước 1) Đăng nhập vào ứng dụng và lưu trữ cookie xác thực được tạo.

Bước 2) Sử dụng cookie đã lưu trữ, để đăng nhập lại vào ứng dụng mà không cần sử dụng userid và mật khẩu.

Bước 1) Lưu trữ thông tin cookie.

gói CookieExample;nhập java.io.BufferedWriter;nhập java.io.File;nhập java.io.FileWriter;nhập java.util.Set;nhập org.openqa.selenium.By;nhập org.openqa.selenium.WebDriver;nhập org.openqa.selenium.chrome.ChromeDriver;nhập org.openqa.selenium.Cookie;cookie lớp công khaiRead {public static void main (String [] args){Trình điều khiển WebDriver;System.setProperty ("webdriver.chrome.driver", "G: ///chromedriver.exe");driver = new ChromeDriver ();driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");// Nhập id Email và Mật khẩu Nếu bạn đã Đăng kýdriver.findElement (By.name ("tên người dùng")). sendKeys ("abc123");driver.findElement (By.name ("password")). sendKeys ("123xyz");driver.findElement (By.name ("submit")). click ();// tạo tệp có tên Cookies để lưu trữ Thông tin đăng nhậpFile file = new File ("Cookies.data");thử{// Xóa tệp cũ nếu tồn tạifile.delete ();file.createNewFile ();FileWriter fileWrite = new FileWriter (tệp);BufferedWriter Bwrite = new BufferedWriter (fileWrite);// vòng lặp để lấy thông tin cookie// vòng lặp để lấy thông tin cookiefor (Cookie ck: driver.manage (). getCookies ()){Bwrite.write ((ck.getName () + ";" + ck.getValue () + ";" + ck.getDomain () + ";" + ck.getPath () + ";" + ck.getExpiry () + ";" + ck.isSecure ()));Bwrite.newLine ();}Bwrite.close ();fileWrite.close ();}bắt (Exception ex){ex.printStackTrace ();}}}

Giải thích mã:

  • Tạo phiên bản WebDriver
  • Chúng tôi truy cập trang web bằng cách sử dụng driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php")
  • Đăng nhập vào ứng dụng
  • Đọc thông tin cookie bằng cách sử dụng
    driver.manage (). getCookies (); 
  • Lưu trữ thông tin cookie bằng FileWriter Class để viết các luồng ký tự và BufferedWriter để ghi văn bản vào tệp để tạo thành tệp Cookies.data
  • Tệp "Cookies.data" lưu trữ tất cả thông tin cookie cùng với "Tên, Giá trị, Miền, Đường dẫn". Chúng tôi có thể lấy thông tin này và đăng nhập vào ứng dụng mà không cần nhập thông tin đăng nhập.
  • Sau khi bạn chạy mã trên, tệp Cookie.data được tạo trong cấu trúc thư mục dự án như được hiển thị trong màn hình bên dưới. Mở tệp Cookie.data, bạn có thể thấy thông tin đăng nhập của AUT được lưu ở định dạng Cookie, xem màn hình được đánh dấu bên dưới

Bước 2) Sử dụng cookie được lưu trữ để đăng nhập vào ứng dụng.

Bây giờ, chúng tôi sẽ truy cập cookie được tạo ở bước 1 và sử dụng cookie được tạo để xác thực phiên của chúng tôi trong ứng dụng

gói CookieExample;nhập java.io.BufferedReader;nhập java.io.File;nhập java.io.FileReader;nhập java.util.Date;nhập java.util.StringTokenizer;nhập org.openqa.selenium.Cookie;nhập org.openqa.selenium.WebDriver;nhập org.openqa.selenium.chrome.ChromeDriver;lớp công khai CookieWrite{public static void main (String [] args) {Trình điều khiển WebDriver;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");driver = new ChromeDriver ();thử{File file = new File ("Cookies.data");FileReader fileReader = new FileReader (tệp);BufferedReader Buffreader = new BufferedReader (fileReader);String strline;while ((strline = Buffreader.readLine ())! = null) {Mã thông báo StringTokenizer = new StringTokenizer (strline, ";");while (token.hasMoreTokens ()) {Tên chuỗi = token.nextToken ();Giá trị chuỗi = token.nextToken ();Tên miền chuỗi = token.nextToken ();Đường dẫn chuỗi = token.nextToken ();Ngày hết hạn = null;Chuỗi val;if (! (val = token.nextToken ()). bằng ("null")){hết hạn = mới Ngày (val);}Boolean isSecure = new Boolean (token.nextToken ()).booleanValue ();Cookie ck = Cookie mới (tên, giá trị, miền, đường dẫn, thời hạn sử dụng, isSecure);System.out.println (ck);driver.manage (). addCookie (ck); // Thao tác này sẽ thêm cookie được lưu trữ vào phiên hiện tại của bạn}}} catch (Exception ex) {ex.printStackTrace ();}driver.get ("http://demo.guru99.com/test/cookie/selenium_aut.php");}}

OUTPUT: Bạn được đưa trực tiếp đến màn hình đăng nhập thành công mà không cần nhập id người dùng đầu vào và mật khẩu

LƯU Ý: Sử dụng làm mới cứng trong trường hợp bạn thấy trang đăng nhập sau khi thực hiện tập lệnh trên.

Phần kết luận

Do đó, bạn có thể tránh nhập tên người dùng và mật khẩu trên máy chủ xác thực chúng lặp đi lặp lại cho mỗi lần kiểm tra với sự trợ giúp của Selenium Webdriver, và do đó tiết kiệm rất nhiều thời gian.

Bài viết này được đóng góp bởi Mangesh Waghmare