드롭다운에서 값을 선택하는 방법 Selenium

⚡ 스마트 요약

드롭다운 메뉴에서 값을 선택하세요 Selenium 이 클래스는 HTML SELECT 요소를 제어하기 위해 전용 Select 클래스를 사용합니다. 이 클래스는 옵션을 정확하게 선택하고 다중 선택 드롭다운을 지원하는 selectByVisibleText, selectByValue 및 selectByIndex 메서드를 제공합니다.

  • 📦 패키지를 가져옵니다. org.openqa.selenium.support.ui.Select를 불러와서 선택 메서드를 호출하기 전에 WebElement를 감싸십시오.
  • 🎯 적절한 방법을 선택하세요: 표시 텍스트, 값 속성 또는 위치 중 어느 것이 가장 안정적인지에 따라 selectByVisibleText, selectByValue 또는 selectByIndex를 선택하십시오.
  • 🔁 다중 선택 드롭다운 메뉴를 처리합니다. isMultiple을 사용하여 다중 선택을 감지하고, deselectAll 또는 deselectByVisibleText를 사용하여 이전 선택 항목을 지웁니다.
  • 선택 사항을 확인하십시오: getFirstSelectedOption을 호출하여 테스트가 실제로 드롭다운 상태를 변경했는지 확인하십시오.
  • 🤖 AI 위치 추적기를 사용하세요: 자체 복구 AI 로케이터는 UI 변경 후 손상된 선택 요소 XPath를 복구합니다.ping 드롭다운 테스트는 모든 릴리스에서 안정적입니다.

드롭다운 메뉴에서 값을 선택하세요 Selenium

Select Class란 무엇인가요? Selenium?

The 수업을 선택하세요 Selenium 의 도우미 클래스입니다 org.openqa.selenium.support.ui WebDriver가 HTML과 상호 작용할 수 있도록 해주는 패키지입니다. <select> 이 라이브러리는 요소들을 포함하고 있습니다. 보이는 텍스트, 값 또는 인덱스를 기준으로 옵션을 선택 및 선택 해제하는 메서드와 드롭다운 메뉴에서 다중 선택이 가능한지 여부를 감지하는 메서드를 제공합니다.

때문에 Select 단골이다 Java 클래스의 경우, 다음과 같은 방법으로 인스턴스를 생성합니다. new 키워드를 사용하고 해당 요소를 가리키는 WebElement를 전달합니다. <select> 페이지에 태그를 추가합니다.

드롭다운을 선택하는 방법 Selenium

드롭다운 메뉴를 처리하기 전에 Selenium두 단계가 필요합니다.

  1. 패키지 가져오기 org.openqa.selenium.support.ui.선택.
  2. 드롭다운 메뉴를 다음과 같이 인스턴스화합니다. Select 반대하다 Selenium 웹드라이버.

예를 들어, 열어보세요 Mercury 투어 등록 페이지 (https://demo.guru99.com/test/newtours/register.php) 그리고 "국가" 드롭다운 메뉴를 찾으세요.

드롭다운을 선택하세요. Selenium

1단계) Select 패키지를 가져옵니다.

import org.openqa.selenium.support.ui.Select;

2단계) 드롭다운 요소를 Select 클래스의 인스턴스로 선언합니다. 아래 예시에서 인스턴스의 이름은 다음과 같습니다. drpCountry.

Select drpCountry = new Select(driver.findElement(By.name("country")));

3단계) ​​드롭다운 메뉴를 제어하기 시작합니다. 원하는 선택 메서드를 사용하여 옵션을 선택하세요. 아래 예시에서는 "ANTARCTICA"를 선택합니다.

drpCountry.selectByVisibleText("ANTARCTICA");

방법 선택 Selenium

Select 클래스는 드롭다운 옵션과 상호 작용하는 여러 메서드를 제공합니다. 가장 일반적인 다섯 가지 메서드는 아래에 설명되어 있습니다.

1) selectByVisibleText() 및 deselectByVisibleText()

  • 표시된 텍스트가 매개변수와 일치하는 옵션을 선택하거나 선택 해제합니다.
  • 매개 변수 : 옵션에 표시된 정확한 텍스트입니다.

예:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() 및 deselectByValue()

  • 옵션을 선택하거나 선택 해제합니다. value 속성이 매개변수와 일치합니다.
  • 표시된 텍스트와 value 속성은 아래와 같이 종종 다릅니다.
  • 매개 변수 : 옵션의 value 속성을 사용하지 않는 것입니다.

selectByValue 및 deselectByValue

예:

drpCountry.selectByValue("234");

3) selectByIndex() 및 deselectByIndex()

  • 지정된 인덱스의 옵션을 선택하거나 선택 해제합니다. 인덱스는 0부터 시작합니다.
  • 매개 변수 : 옵션의 정수 인덱스입니다.

예:

drpCountry.selectByIndex(0);

4) isMultiple()

  • 반품 TRUE 드롭다운 메뉴에서 여러 항목을 동시에 선택할 수 있는 경우, 그렇지 않은 경우 FALSE.
  • 매개 변수 : 없음.

예:

if (drpCountry.isMultiple()) {
    // do something here
}

5) deselectAll()

  • 선택된 모든 옵션을 지웁니다. 다중 선택 드롭다운 메뉴에서만 유효합니다.
  • 매개 변수 : 없음.

예:

drpCountry.deselectAll();

완료 Code 선택 방법 Selenium

다음 Java 이 프로그램은 단일 선택 드롭다운 메뉴와 다중 선택 드롭다운 메뉴 모두에서 Select 클래스의 사용법을 보여줍니다.

package newpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.By;

public class accessDropDown {
    public static void main(String[] args) {
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        String baseURL = "https://demo.guru99.com/test/newtours/register.php";
        WebDriver driver = new FirefoxDriver();
        driver.get(baseURL);

        // Single-select drop-down
        Select drpCountry = new Select(driver.findElement(By.name("country")));
        drpCountry.selectByVisibleText("ANTARCTICA");

        // Multi-select drop-down
        driver.get("http://jsbin.com/osebed/2");
        Select fruits = new Select(driver.findElement(By.id("fruits")));
        fruits.selectByVisibleText("Banana");
        fruits.selectByIndex(1);
    }
}

다중 선택 요소에서 항목 선택하기

The selectByVisibleText() 이 방법은 다중 선택 드롭다운 메뉴에서도 작동합니다. 예를 들어, 다음과 같이 사용하세요. https://jsbin.com/osebed/2 기본으로 URL여러 항목을 한 번에 선택할 수 있는 드롭다운 메뉴를 표시합니다.

다중 선택 요소에서 항목 선택하기

아래 코드 조각은 첫 번째 두 옵션을 선택합니다. selectByVisibleText():

다중 선택 요소에서 항목 선택 코드

방법 참조표

이 표는 위에서 설명한 모든 Select 클래스 메서드를 요약하여 빠르게 찾아볼 수 있도록 정리한 것입니다.

Command 기술설명
selectByVisibleText() / deselectByVisibleText() 표시된 텍스트를 기준으로 옵션을 선택하거나 선택 해제합니다.
selectByValue() / deselectByValue() 옵션을 선택하거나 선택 해제합니다. value 속성을 사용하지 않는 것입니다.
selectByIndex() / deselectByIndex() 0부터 시작하는 인덱스를 사용하여 옵션을 선택하거나 선택 해제합니다.
다중() 드롭다운 메뉴에서 복수 선택이 가능하면 TRUE를, 그렇지 않으면 FALSE를 반환합니다.
모두 선택 해제() 다중 선택 드롭다운 메뉴에서 이전에 선택한 모든 옵션을 선택 해제합니다.

드롭다운 상자를 제어하려면 다음을 가져오세요. org.openqa.selenium.support.ui.Select 먼저 패키지를 생성한 다음 Select 인스턴스를 만들고 위의 메서드 중 하나를 호출하십시오.

자주 묻는 질문

Select 클래스는 Selenium HTML SELECT 요소를 위한 헬퍼입니다. WebElement를 래핑하고 selectByVisibleText, selectByValue, selectByIndex, isMultiple, deselectAll 메서드를 제공하여 깔끔한 드롭다운 자동화를 지원합니다.

레이블은 지역화에 따라 자주 변경되므로, 값 속성이 안정적일 때는 selectByValue를 사용하는 것이 좋습니다. 텍스트가 중요한 경우에는 selectByVisibleText를 사용하고, 옵션 순서가 변경될 수 있는 경우에는 selectByIndex를 사용하지 마십시오.

`Select` 클래스는 실제 HTML `SELECT` 태그에서만 작동합니다. WebElement가 드롭다운처럼 보이도록 스타일링된 `div`, `ul` 또는 사용자 지정 위젯인 경우, `WebElement.click()` 또는 Actions API를 통해 옵션을 클릭해야 합니다.

Select 인스턴스에서 getFirstSelectedOption()을 호출하고 해당 getText() 값을 검증합니다. 다중 선택 드롭다운의 경우 getAllSelectedOptions()을 반복하여 반환된 목록을 예상 선택 항목과 비교합니다.

네. isMultiple() 함수를 사용하여 드롭다운 메뉴가 여러 값을 허용하는지 확인한 다음, selectByVisibleText 함수를 여러 번 호출하거나 deselectAll() 함수를 호출하여 모든 항목을 초기화할 수 있습니다. 다중 선택 드롭다운 메뉴를 사용하려면 HTML SELECT 요소에 multiple 속성을 선언해야 합니다.

옵션 로케이터에 ExpectedConditions.numberOfElementsToBeMoreThan과 함께 WebDriverWait를 사용하십시오. 이렇게 하면 비동기적으로 채워진 드롭다운이 Select 클래스를 인스턴스화하고 선택 메서드를 호출하기 전에 준비됩니다.

AI 기반 자가 복구 로케이터는 SELECT 요소의 ID, 이름 또는 XPath가 변경되었는지 감지하고 작동하는 대체 값으로 전환합니다. 이를 통해 UI 재설계 후 파이프라인에서 발생하는 불안정한 드롭다운 오류를 줄일 수 있습니다.

예. AI 코딩 도우미는 "등록 페이지에서 남극을 국가로 선택하세요"와 같은 일반적인 요청을 올바른 위치 지정자, selectByVisibleText 호출 및 검증 어설션을 포함하는 완전한 Select 인스턴스로 변환합니다.

이 게시물을 요약하면 다음과 같습니다.