Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục hướng dẫn các bạn cách check phần tử đang được selected hay không trong Selenium Webdriver. Thông thường mình sẽ check với 2 loại control là checkbox và radio button.
1. Yêu cầu
- Kiểm tra phần tử như checkbox, radiobutton,.. đã được select hay chưa. Áp dụng khi check về UI cho 1 page hoặc khi viết kịch bản tự động hóa, bạn muốn kiểm tra chắc chắn rằng một element nào đó đã được chọn hay chưa trước khi chuyển qua bước tiếp theo
Ví dụ như hình dưới khi check vào checkbox “Contingent Rent” thì 4 textbox “Period End/ Contingent Rent Description/ Days to Report/ Breakover” sẽ được phép chỉnh sửa (nhập dữ liệu) => vậy thì chúng ta phải kiểm tra rằng checkbox “Contingent Rent” đã được select và sau đó 4 textbox kia phải nhập được dữ liệu vào -> Nếu checkbox “Contingent Rent” đã được chọn nhưng không thể nhập dữ liệu vào thì đó là Bug
2. Giải pháp
- import thư viện: org.openqa.selenium.WebElement;
- Khởi tạo: WebElement locator;
- Kiểm tra hiển thị: locator.isSelected();
- Xem chi tiết hàm isElementSelected() trong phần Source demo phía dưới nhé
3. Site demo
- Link: https://automationfc.github.io/basic-form/index.html
- Như hình dưới, mình sẽ check các element này đã hoặc chưa được select:
- Age radio button
- Job Role 02 dropdown list
- Interest checkbox
4. Source demo
package org.example.Topic37;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.time.Duration;
public class CheckCheckboxIsSelected {
WebDriver driver;
@BeforeClass
public void beforeClass() {
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.get("https://automationfc.github.io/basic-form/index.html");
driver.manage().window().maximize();
}
@Test
public void Test01_DevelopmentCheckboxIsSelected() throws Exception {
String element = "//*[@id='development']";
driver.findElement(By.xpath(element)).click();
Thread.sleep(2000);
if(isElementSelected(driver, element)){
System.out.println("'Development' checkbox is selected");
} else{
System.out.println("'Development' checkbox isn't selected");
}
}
@Test
public void Test02_DesignCheckboxIsNotSelected() throws Exception {
String element = "//*[@id='design']";
if(isElementSelected(driver, element)){
System.out.println("'Design' checkbox is selected");
} else{
System.out.println("'Design' checkbox isn't selected");
}
}
@Test
public void Test03_Under18RadioButtonIsSelected() throws Exception {
String element = "//*[@id='under_18']";
driver.findElement(By.xpath(element)).click();
Thread.sleep(2000);
if(isElementSelected(driver, element)){
System.out.println("'Under 18' radio button is selected");
} else{
System.out.println("'Under 18' radio button isn't selected");
}
}
@Test
public void Test04_18OrOrderRadioButtonIsNotSelected() throws Exception {
String element = "//*[@id='over_18']";
if(isElementSelected(driver, element)){
System.out.println("'Over 18' radio button is selected");
} else{
System.out.println("'Over 18' radio button isn't selected");
}
}
@Test
public void Test05_JobRoleDropdownListIsNotSelected() throws Exception {
String element = "//*[@id='job1']";
if(isElementSelected(driver, element)){
System.out.println("'Job Role 01' dropdown list is selected");
} else{
System.out.println("'Job Role 01' dropdown list isn't selected \n");
}
}
public boolean isElementSelected(WebDriver driver, String yourLocator) {
try {
WebElement locator;
locator = driver.findElement(By.xpath(yourLocator));
return locator.isSelected();
} catch (NoSuchElementException e) {
return false;
}
}
@AfterClass
public void afterClass() {
driver.quit();
}
}
Nguồn:
https://vntesters.com/java-webdriver-10-kiem-tra-phan-tu-da-duoc-chon-selected/