Skip to content
Automation FC Blog
Automation FC Blog

Roadmap to Become an Automation Test Engineer

  • Knowledge
  • Selenium
  • Framework
  • Tips
  • Course
  • Event
  • About
  • Copyright
Automation FC Blog

Roadmap to Become an Automation Test Engineer

01/10/201831/12/2022

Xử lí Dropdown/ List (Select)

Yêu cầu:

  • Làm sao để chọn các giá trị: Automation Tester/ Manual Tester trong dropdown ở hình trên?
  • Làm sao để kiểm tra trong dropdown có bao nhiêu giá trị => như hình trên có 5 giá trị?
  • Làm sao để kiểm tra 1 giá trị trong dropdown hiển thị đúng hay chưa sau khi đã chọn thành công?
  • Làm sao để kiểm tra dropdown có phải là multi-select hay single select => multi-select: cho phép chọn nhiều giá trị trong dropdown/ list?

Giải pháp:

  • Selenim WebDriver hỗ trợ kiểm tra các phần tử Dropdown/ List bằng cách sử dụng lớp Select thay vì sử dụng lớp WebElement
    => import org.openqa.selenium.support.ui.Select;
  • Lớp Select cung cấp các phương pháp và thuộc tính khác nhau để tương tác với dropdown/ list qua phần tử HTML là thẻ <select>

Các phương thức sử dụng trong bài viết:

  • Select dropdown sử dụng thuộc tính ID:
    Select select = new Select(driver.findElement(By.id(“job1”)));
    => <select id=”job1“ name=”user_job1“>
  • Select một giá trị trong dropdown sử dụng visible text (thường sử dụng)
    select.selectByVisibleText(“Automation Tester”);
    => <option value=”automation“>Automation Tester</option>
  • Hoặc: Select một giá trị trong dropdown sử dụng value
    select.selectByValue(“manual”);
    => <option value=”manual“>Manual Tester</option>
  • Hoặc: Select một giá trị trong dropdown sử dụng index (bắt đầu từ vị trí số 0)
    select.selectByIndex(3);
    => <option value=”website“>Website Tester</option>
  • Kiểm tra dropdown không hỗ trợ multi-select:
    Assert.assertFalse(select.isMultiple());
  • Kiểm tra dropdown có 5 giá trị:
    Assert.assertEquals(5, select.getOptions().size());
    => Mỗi 1 giá trị tương ứng với 1 thẻ <option>
  • Kiểm tra giá trị trong dropdown hiển thị đúng sau khi đã chọn thành công (giá trị đã chọn sẽ luôn hiển thị ở vị trí đầu tiên):
    Assert.assertEquals(“Manual Tester”, select.getFirstSelectedOption().getText());

Site demo:     Link

Source demo:

[code language=”java” autolinks=”true”]
package seleniumWebDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class WebDriver11_HandleDropdownAndList {
WebDriver driver;

@BeforeClass
public void setUp() {
driver = new FirefoxDriver();
driver.get(“http://daominhdam.890m.com/”);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
}

@Test
public void Test01_HandleDropdownList() throws Exception {
// Select using ID attribute
Select select = new Select(driver.findElement(By.id(“job1”)));
// Verify Dropdown doesn’t support multi-select
Assert.assertFalse(select.isMultiple());
// Verify Dropdown has five options
Assert.assertEquals(5, select.getOptions().size());
// Select an option in Dropdown using visible text
select.selectByVisibleText(“Automation Tester”);
Assert.assertEquals(“Automation Tester”, select.getFirstSelectedOption().getText());
Thread.sleep(4000);
// Select an option in Dropdown using value attribute
select.selectByValue(“manual”);
Assert.assertEquals(“Manual Tester”, select.getFirstSelectedOption().getText());
Thread.sleep(4000);
// Select an option in Dropdown using index
select.selectByIndex(3);
Assert.assertEquals(“Mobile Tester”, select.getFirstSelectedOption().getText());
Thread.sleep(4000);
}

@AfterClass
public void tearDown() {
driver.quit();
}
}
[/code]

Video demo: 

https://youtu.be/lV-h_N6kCHk

 

 

Selenium handle selenium dropdown

Post navigation

Previous post
Next post

Comments (0)

  1. Thanh Nga says:
    01/10/2017 at 10:34 AM

    Cảm ơn a vì bài viết . Tuy nhiên nếu như em muốn xử lý chức năng chọn dropdown list hoặc là checkbox hoặc radio button theo hướng mà ở dòng code, k cần viết rõ value ra, cái đó sẽ được nhập trong file testcase . Tức là em muốn chỉ cần code 1 lần mà áp dụng được với các project khác nhau ấy ạ . Anh giúp em code cái vấn đề này được không ạ ?

    Reply
    1. Automation Testing Tutorials says:
      02/10/2017 at 6:35 AM

      Chào em, nếu viết theo dạng common function thì em sử dụng như sau nhé:
      [code language=”java”]
      public void selectDropdown(WebDriver driver, String locator, String value) {
      Select select = new Select(driver.findElement(By.xpath(locator)));
      select.selectByVisibleText(value);
      }
      [/code]
      Testcase:
      String abcdDropdown = “//*[@id=’job’]”;
      selectDropdown(driver, abcdDropdown, “Manual Tester”);

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Archives

  • December 2022 (1)
  • August 2021 (1)
  • April 2020 (1)
  • February 2020 (3)
  • October 2018 (5)
  • September 2018 (6)
  • August 2018 (8)
  • October 2017 (1)
  • December 2016 (1)
  • May 2016 (1)
  • March 2016 (1)
©2023 Automation FC Blog | WordPress Theme by SuperbThemes