ドロップダウンから値を選択する方法 Selenium

⚡ スマートサマリー

ドロップダウンから値を選択してください Selenium 専用の Select クラスを使用して HTML の 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?

その クラスを選択してください Selenium のヘルパークラスです org.openqa.selenium.support.ui WebDriverがHTMLとやり取りできるようにするパッケージ <select> 要素。表示テキスト、値、またはインデックスによってオプションを選択および選択解除するメソッド、およびドロップダウンが複数選択を受け付けるかどうかを検出するメソッドを提供します。

なぜなら Select 常連です Java クラスでは、インスタンスを作成します。 new キーワードと、WebElement を渡す <select> ページ上のタグ。

でドロップダウンを選択する方法 Selenium

ドロップダウンを処理する前に Selenium2つの手順が必要です。

  1. パッケージをインポートする org.openqa.selenium.support.ui.Select.
  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)ドロップダウンメニューの操作を開始します。 任意の選択メソッドを使用してオプションを選択してください。以下の例では「南極」を選択します。

drpCountry.selectByVisibleText("ANTARCTICA");

でメソッドを選択します Selenium

Selectクラスは、ドロップダウンリストのオプションを操作するためのいくつかのメソッドを提供します。最も一般的な5つのメソッドを以下に説明します。

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);
    }
}

複数選択要素で項目を選択する

その selectByVisibleText() このメソッドは複数選択ドロップダウンにも有効です。例として、 https://jsbin.com/osebed/2 拠点として URL複数の項目を一度に選択できるドロップダウンメニューが表示されます。

複数選択要素で項目を選択する

以下のコードスニペットは、最初の 2 つのオプションを選択します。 selectByVisibleText():

複数選択要素のコードで項目を選択する

方法参照表

この表は、上記で説明したすべての Select クラスのメソッドをまとめたもので、簡単に参照できます。

Command 詳細説明
selectByVisibleText() / deselectByVisibleText() 表示されているテキストに基づいて、オプションを選択または選択解除します。
selectByValue() / deselectByValue() オプションを選択または選択解除します value 属性。
selectByIndex() / deselectByIndex() 0から始まるインデックスを使用して、オプションを選択または選択解除します。
isMultiple() ドロップダウンリストで複数選択が可能な場合は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 属性を宣言する必要があります。

オプションロケーターで、WebDriverWait と ExpectedConditions.numberOfElementsToBeMoreThan を使用してください。これにより、Select クラスのインスタンス化や選択メソッドの呼び出しを行う前に、非同期でデータが入力されたドロップダウンが準備完了状態になっていることが保証されます。

AIを活用した自己修復型ロケーターは、SELECT要素のID、名前、またはXPathが変更されたことを検知し、正常に動作する代替値に切り替えます。これにより、UIの再設計後に発生する、不安定なドロップダウンリストの不具合を軽減できます。

はい。AIコーディングアシスタントは、「登録ページで国として南極を選択してください」といった平易な英語のリクエストを、適切なロケーター、selectByVisibleText呼び出し、および検証アサーションを含む完全なSelectインスタンスに変換します。