Xử lý Dropdown list với Selenium Webdriver

Tram Ho

Chúng ta có thể sử dụng Selenium WebDriver để xử lý Dropdown list vì nó hỗ trợ kiểm tra các giá trị của DropDown list bằng cách sử dụng lớp Select. Đầu tiên chúng ta tạo ra một trang HTML bao gồm nhiều thành phần web cơ bản như :

  • Hyperlink (đường dẫn)
  • Button (nút)
  • Dropdown (list option)

Ví dụ như hình dưới đây :

Giải thích về Ứng dụng đang được Thử nghiệm :

Trang web được thiết kế theo hướng bao gồm một vài loại yếu tố web cơ bản :

  • Hyperlink : 2 đường dẫn có tên là GoogleabodeQA được cung cấp để chuyển hướng người dùng đến trực tiếp trang “https://www.google.co.in/” và “http://www.abodeqa.com/” khi click vào.
  • Button : nút "try it" được tạo để hiển thị popup có nút OKCancel khi click vào.
  • Dropdown : 3 dropdown list : colour dropdown, fruit dropdown, animal dropdown được tạo để chọn lần lượt màu, loại trái cây và các con vật. 3 dropdown list này đã được set giá trị default.

Mã HTML được sử dụng để tạo trang web được đề cập ở trên:

Kịch bản để chạy test tự động

  • Khởi chạy trình duyệt web và mở trang web test (trang test trên hình)
  • Nhấp vào đường dẫn “Google” trên trang test
  • Điều hướng trở lại trang web gốc (trang test trên)
  • Chọn “Green” trong colour dropdown list
  • Chọn “Orange” trong fruit dropdown list
  • Chọn “Elephant” trong animal dropdown list

Mã WebDriver sử dụng class Selenium Select

Có thể sử dụng lại project đã tạo ở các bài trước để tiếp tục phần này.

Bước 1: Tạo 1 class java mới tên là “HandlingDropDown” bên trong “Learning_Selenium” project.

Bước 2: Copy và paste đoạn code dưới đây vào “HandlingDropDown.java” class. Đây là đoạn mã tương đương với kịch bản được đề cập ở trên:

Code Walkthrough (giải trình đoạn mã)

Import Statements

  • import org.openqa.selenium.support.ui.Select – Import gói này trước khi tạo tập lệnh, nó sẽ tham chiếu đến class Select để yêu cầu xử lý dropdown.

Khởi tạo đối tượng cho class Select

Chúng ta tạo một biến tham chiếu cho lớp Select có tên là selectByValue và khởi tạo nó bằng cách sử dụng lớp Select và mã định danh cho target dropdown (trong ví dụ này là đang trỏ đến dropdown color list đầu tiên với id = “SelectID_One”)

Mã định danh hoặc giá trị định vị cho dropdown có thể được tìm thấy bằng cách sử dụng các kỹ thuật tìm kiếm ở các bài trước đây (sử dụng Selenium IDE và firebug).

Cách tìm mã định danh cho 1 dropdown list :

Hầu hết tất cả các thành phần dropdown list được nằm trong cặp thẻ <select> … </select> , list option bên trong gồm nhiều giá trị (tạo thành 1 tập danh sách các giá trị xổ xuống), mỗi 1 giá trị/option được đặt trong cặp thẻ <option> … </option> (Hình dưới đây).

Cách 1 : Sử dụng method selectByValue() để thiết lập giá trị cho dropdown

Trong câu lệnh trên, chúng ta chọn giá trị “green” trong dropdown list bằng cách sử dụng phương thức selectByValue() và tham số hóa nó bằng giá trị của thuộc tính value (value=’greenvalue’) :

Đây là cách chọn option dựa vào giá trị của thuộc tính value trong thẻ. Nên sử dụng cách này vì độ chính xác cao, tránh hiện tượng trùng lặp dữ liệu.

Cách 2 : Sử dụng method selectByVisibleText() để thiết lập giá trị cho dropdown

Trong câu lệnh trên, chúng ta chọn giá trị “Lime” trong dropdown list thứ hai bằng cách sử dụng phương thức selectByVisibleText() và tham số hóa nó bằng giá trị text hiển thị trực tiếp trên giao diện người dùng (text trong cặp thẻ <option> </option>). Đây là cách chọn option dựa vào giá trị của text hiển thị trên UI.

Cách 3 : Sử dụng method selectByIndex() để thiết lập giá trị cho dropdown

Trong câu lệnh trên, chúng ta chọn option thứ 3 trong dropdown list bằng cách sử dụng phương thức selectByIndex() và tham số hóa nó bằng giá trị index (số thứ tự) của element. Đây là cách chọn option dựa vào số thứ tự của option trong list, index được đánh bắt đầu từ 0.

Lời kết

Trên đây là những kiến thức cơ bản về xử lý dropdown được dịch từ bài : https://www.softwaretestinghelp.com/selenium-select-class-selenium-tutorial-13/

Ngoài ra thực tế, dropdown còn được chia làm Drop down list tĩnh với Drop down list động, và cách xử lý với từng loại bạn có thể tham khảo ở bài dưới đây :

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo