Hoe u een waarde selecteert uit een vervolgkeuzelijst in Selenium

โšก Slimme samenvatting

Selecteer een waarde uit de vervolgkeuzelijst in Selenium De klasse maakt gebruik van de speciale Select-klasse om HTML SELECT-elementen te beheren. Deze klasse biedt de methoden selectByVisibleText, selectByValue en selectByIndex, waarmee opties nauwkeurig kunnen worden geselecteerd en dropdownmenu's met meerdere selecties worden ondersteund.

  • ???? Importeer het pakket: Importeer org.openqa.selenium.support.ui.Select en plaats dit in een wrapper rond het WebElement voordat je een selectiemethode aanroept.
  • ๐ŸŽฏ Kies de juiste methode: Kies selectByVisibleText, selectByValue of selectByIndex, afhankelijk van of de weergegeven tekst, het waardeattribuut of de positie het meest stabiel is.
  • ๐Ÿ” Verwerk dropdownmenu's met meerdere selectiemogelijkheden: Gebruik isMultiple om ze te detecteren en deselectAll of deselectByVisibleText om eerdere keuzes te wissen.
  • โœ… Controleer de selectie: Roep getFirstSelectedOption aan om te bevestigen dat de test de status van het dropdownmenu daadwerkelijk heeft gewijzigd.
  • ๐Ÿค– Gebruik AI-locators: Zelfherstellende AI-locators repareren kapotte XPath-expressies voor selectie-elementen na UI-wijzigingen, keeping Dropdown-tests blijven stabiel over verschillende releases.

Selecteer een waarde uit de vervolgkeuzelijst in Selenium

Wat is de Select Class in Selenium?

De Selecteer klasse in Selenium is een helper class uit de org.openqa.selenium.support.ui Een pakket waarmee WebDriver met HTML kan communiceren. <select> elementen. Het biedt methoden om opties te selecteren en deselecteren op basis van zichtbare tekst, waarde of index, en om te detecteren of een dropdown meerdere selecties accepteert.

Omdat Select is een gewone Java klasse, je maakt een instantie met de new trefwoord en geef het WebElement door dat verwijst naar de <select> taggen op de pagina.

Hoe u een vervolgkeuzelijst selecteert in Selenium

Voordat je een dropdownmenu afhandelt in SeleniumEr zijn twee stappen nodig:

  1. Importeer het pakket org.openqa.selenium.support.ui.Select.
  2. Instantieer het dropdownmenu als een Select bezwaar in Selenium Webstuurprogramma.

Open bijvoorbeeld de Mercury Registratiepagina voor rondleidingen (https://demo.guru99.com/test/newtours/register.php) en zoek het vervolgkeuzemenu "Land".

Selecteer Vervolgkeuzelijst in Selenium

Stap 1) Importeer het Select-pakket.

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

Stap 2) Declareer het dropdown-element als een exemplaar van de Select-klasse. In het onderstaande voorbeeld wordt het exemplaar benoemd drpCountry.

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

Stap 3) Begin met het bedienen van het dropdownmenu. Gebruik een willekeurige selectiemethode om een โ€‹โ€‹optie te kiezen. In het onderstaande voorbeeld wordt "ANTARCTICA" geselecteerd:

drpCountry.selectByVisibleText("ANTARCTICA");

Selecteer Methoden in Selenium

De Select-klasse biedt verschillende methoden om met dropdown-opties te interageren. De vijf meest voorkomende worden hieronder beschreven.

1) selectByVisibleText() en deselectByVisibleText()

  • Hiermee kunt u de optie selecteren of deselecteren waarvan de weergegeven tekst overeenkomt met de parameter.
  • Parameter: De exacte tekst die voor de optie wordt weergegeven.

Voorbeeld:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() en deselectByValue()

  • Selecteert of deselecteert de optie waarvan value Het attribuut komt overeen met de parameter.
  • Merk op dat de weergegeven tekst en de value De kenmerken zijn vaak verschillend, zoals hieronder wordt weergegeven.
  • Parameter: de optie value attribuut.

selectByValue en deselectByValue

Voorbeeld:

drpCountry.selectByValue("234");

3) selectByIndex() en deselectByIndex()

  • Hiermee kunt u de optie op de opgegeven index selecteren of deselecteren. Indexen beginnen bij nul.
  • Parameter: de integerindex van de optie.

Voorbeeld:

drpCountry.selectByIndex(0);

4) isMultiple()

  • Retourneren TRUE als het keuzemenu meerdere selecties tegelijk toestaat, anders FALSE.
  • Parameter: geen.

Voorbeeld:

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

5) deselectAll()

  • Verwijdert alle geselecteerde opties. Alleen geldig bij keuzelijsten met meerdere selectiemogelijkheden.
  • Parameter: geen.

Voorbeeld:

drpCountry.deselectAll();

Volledige Code van Select Methods in Selenium

De volgende Java Dit programma demonstreert de Select-klasse op zowel een dropdownmenu met รฉรฉn selectieoptie als een dropdownmenu met meerdere selectieopties.

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

Items selecteren in een meervoudig SELECT-element

De selectByVisibleText() Deze methode werkt ook op dropdownmenu's met meerdere selectiemogelijkheden. Gebruik bijvoorbeeld: https://jsbin.com/osebed/2 als base URLHet toont een keuzelijst waarmee meerdere opties tegelijk geselecteerd kunnen worden.

Items selecteren in een element voor meervoudige selectie

Het onderstaande codefragment selecteert de eerste twee opties met behulp van selectByVisibleText():

Items selecteren in een meerkeuze-element code

Methode Referentietabel

Deze tabel geeft een overzicht van alle hierboven besproken Select-klassemethoden, zodat u ze snel kunt opzoeken.

commando Beschrijving
selectByVisibleText() / deselectByVisibleText() Hiermee kunt u een optie selecteren of deselecteren op basis van de weergegeven tekst.
selectByValue() / deselectByValue() Hiermee kunt u een optie selecteren of deselecteren. value attribuut.
selectByIndex() / deselectByIndex() Hiermee kunt u een optie selecteren of deselecteren op basis van de index die begint bij nul.
isMeerdere() Geeft TRUE terug als het keuzemenu meerdere selecties toestaat, anders FALSE.
Deselecteer alles() Deselecteert alle eerder geselecteerde opties in een keuzelijst met meerdere selectiemogelijkheden.

Om keuzelijsten te beheren, importeer de org.openqa.selenium.support.ui.Select Maak eerst een pakket aan, vervolgens een Select-instantie en roep een van de bovenstaande methoden aan.

Veelgestelde vragen

De Select-klasse is een Selenium Een helper voor HTML SELECT-elementen. Deze wrapper om een โ€‹โ€‹WebElement en biedt selectByVisibleText, selectByValue, selectByIndex, isMultiple en deselectAll voor een soepele automatisering van dropdownmenu's.

Gebruik bij voorkeur selectByValue wanneer het waardeattribuut stabiel is, omdat labels vaak veranderen voor lokalisatie. Gebruik selectByVisibleText wanneer de tekst gezaghebbend is en vermijd selectByIndex wanneer de volgorde van opties kan veranderen.

De Select-klasse werkt alleen op echte HTML SELECT-tags. Als het WebElement een div, ul of een aangepaste widget is die eruitziet als een dropdownmenu, moet u in plaats daarvan op opties klikken via WebElement.click() of de Actions API.

Roep getFirstSelectedOption() aan op de Select-instantie en controleer de getText()-waarde. Voor dropdownmenu's met meerdere selecties doorloop je getAllSelectedOptions() en vergelijk je de geretourneerde lijst met de verwachte selecties.

Ja. Gebruik isMultiple() om te bevestigen dat de dropdown meerdere waarden toestaat, roep vervolgens selectByVisibleText meerdere keren aan of deselectAll() om de selectie te resetten. Dropdowns met meervoudige selectie vereisen dat het HTML SELECT-element het attribuut multiple declareert.

Gebruik WebDriverWait met ExpectedConditions.numberOfElementsToBeMoreThan op de optielocator. Dit zorgt ervoor dat asynchroon gevulde dropdownmenu's gereed zijn voordat de Select-klasse wordt geรฏnstantieerd en een selectiemethode wordt aangeroepen.

Door AI aangedreven zelfherstellende locators detecteren wanneer de id, naam of XPath van een SELECT-element is gewijzigd en schakelen over naar een werkend alternatief. Ze verminderen onbetrouwbare dropdown-fouten in pipelines na UI-herontwerpen.

Ja. AI-codeerassistenten zetten een eenvoudig Engels verzoek zoals "selecteer land ANTARCTICA op de registratiepagina" om in een complete Select-instantie met de juiste locator, een selectByVisibleText-aanroep en een verificatie-assertie.

Vat dit bericht samen met: