SF

""

Xử lý drop down với Selenium Webdriver

            Drop down với Selenium

Selenium WebDriver cung cấp cho chúng ta một số cách để chọn được item trong drop down list. Ở bài này mình sẽ hướng dẫn các bạn cơ bản về việc xử lý drop down trong Selenium:

drop_list_static

Việc xử lý drop down list , sẽ dựa vào các thuộc tính value, visible text  index. 

selectByValue()

Đi vào vấn đề chính là việc xử lý drop down list trong selenium. Như đoạn HTLM ở trên, thì ta có value là một thuộc tính trong thẻ option đó là:

value="" selected="" disabled="">Please select
value="Sunday">Sunday   
value="Monday">Monday   
value="Tuesday">Tuesday   
value="Wednesday">Wednesday   
value="Thursday">Thursday   
value="Friday">Friday 
value="Saturday">Saturday

Command:

Select days = new Select(driver.findElement(By.id("select-demo")));
days.selectByValue("Tuesday")

selectByVisibleText()

Với  Visible text – thì đây chính là text hiển thị trên trang web mà ta chọn từ drop down:

Please select
Sunday   
Monday   
Tuesday   
Wednesday   
Thursday   
Friday 
Saturday

Command:

Select days = new Select(driver.findElement(By.id("select-demo")));
days.selectByVisibletext("Friday")

selectByIndex()

Còn với index thì có thể hiểu đơn giản như là ta có một mảng các option, được đánh số từ 0 cho đến hết, như ví dụ trên thì từ 0 đến 7. Index 1 tương ứng với Sunday, lần lượt index 2 tương ứng với Monday, và index 7 tương ứng với Saturday.

Command:

Select days = new Select(driver.findElement(By.id("select-demo")));
days.selectByIndex(3)

Giải thích một số hàm thường sử dụng với drop down list:

** selectByValue(String arg0) || Chọn option có thuộc tính value tương ứng với tham số truyền vào. Tham số truyền vào phải có giá trị tương ứng với giá trị của thuộc tính trong option được chọn/bỏ chọn. Và không phải lúc nào value của option cũng giống với visible text, nên là phải lưu ý tránh nhầm lẫn nha.

** selectByVisibleText(String arg0|| Chọn option có text hiển thị tương ứng với tham số truyền vào. Tham số truyền vào này phải giống 100% với text hiển thị trên drop down.

** selectByIndex(int arg0) || Chọn option theo index của option trong drop down list. Tham số truyền vào là index của option muốn select.

Bonus thêm một số hàm có thể gặp khi làm việc với drop down list:

** isMultiple() || Hàm này để kiểm tra xem drop down list đó có thể chọn được nhiều giá trị hay không, nếu có hàm sẽ trả về giá trị TRUE, ngược lại sẽ trả về FALSE, và nó không yêu cầu truyền tham số đầu vào.

** deselectAll() || Hàm này được sử dụng để hủy tất cả các option đã được select, và chỉ sử dụng đối với những drop down list cho phép chọn nhiều option.

Full code

package basic;

import org.openqa.selenium.By;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.support.ui.Select;

public class Dropdown {

public static void main(String[] args) {
 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://www.seleniumeasy.com/test/basic-select-dropdown-demo.html");
 
 Select s = new Select(driver.findElement(By.id("select-demo")));
 s.selectByValue("Tuesday");
 s.selectByIndex(6);
 s.selectByVisibleText("Wednesday");

}
}