it-swarm.com.de

Selenium WebDriver- und DropDown-Boxen

Wenn ich eine Dropdown-Box auswählen möchte, gibt es mehrere Möglichkeiten, dies zu tun. Ich habe immer gebraucht:

driver.findElement(By.id("selection")).sendKeys("Germany");

Das hat aber nicht jedes Mal funktioniert. Manchmal wurde eine andere Option ausgewählt. Also habe ich ein bisschen gegoogelt und diesen Code gefunden, der jedes Mal funktioniert:

WebElement select = driver.findElement(By.id("selection"));
    List<WebElement> options = select.findElements(By.tagName("option"));
    for (WebElement option : options) {
        if("Germany".equals(option.getText()))
            option.click();
    }

Das geht aber wirklich sehr langsam. Wenn ich eine lange Liste mit vielen Elementen habe, dauert es wirklich zu lange. Meine Frage ist also: Gibt es eine Lösung, die jedes Mal funktioniert und schnell ist?

37
tester

Sie könnten dies versuchen:

IWebElement dropDownListBox = driver.findElement(By.Id("selection"));
SelectElement clickThis = new SelectElement(dropDownListBox);
clickThis.SelectByText("Germany");
46

Versuche Folgendes:

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

Select droplist = new Select(driver.findElement(By.Id("selection")));   
droplist.selectByVisibleText("Germany");
24
StatusQuo

Versuchen Sie die Select-Helper-Klasse und sehen Sie, ob das einen Unterschied macht?

String valueToSelect= "Germany";
WebElement select = driver.findElement(By.id("selection"));
Select dropDown = new Select(select);           
String selected = dropDown.getFirstSelectedOption().getText();
if(selected.equals(valueToSelect)) {//do stuff already selected}
List<WebElement> Options = dropDown.getOptions();
for(WebElement option:Options){
  if(option.getText().equals(valueToSelect)){
       option.click();  
  }
}
3
nilesh

Aus irgendeinem seltsamen Grund funktioniert die SelectElement für den Web-Treiber (Version 2.25.1.0) nicht richtig mit dem Firefox-Treiber (Firefox 15). Manchmal wählt es möglicherweise keine Option aus einer Dropdown-Liste aus. Es scheint jedoch mit dem Chromedriver zu funktionieren ... Dies ist eine Verbindung zum Chromedriver ... einfach in das Ablageverzeichnis.

2
Skynet

Beispiel für die Auswahl einer Option aus der Dropdown-Liste:

Klicken Sie auf die Dropdown-Liste mit id oder csspath oder xpath oder name. Ich habe hier verwendet.

driver.findElement(By.id("dropdownlistone")).click(); // To click on drop down list
driver.findElement(By.linkText("india")).click(); // To select a data from the drop down list.
1
Murali

Packen Sie einfach Ihr WebElement in Select Object ein (siehe unten)

Select dropdown = new Select(driver.findElement(By.id("identifier")));

Danach können Sie den gewünschten Wert auf drei Arten auswählen. Betrachten Sie eine HTML-Datei wie diese

<html>
<body>
<select id = "designation">
<option value = "MD">MD</option>
<option value = "prog"> Programmer </option>
<option value = "CEO"> CEO </option>
</option>
</select>
<body>
</html>

Jetzt Dropdown zu identifizieren tun

Select dropdown = new Select(driver.findElement(By.id("designation")));

Um die Option auszuwählen, sagen Sie 'Programmer'

dropdown.selectByVisibleText("Programmer ");

oder

 dropdown.selectByIndex(1);

oder

 dropdown.selectByValue("prog");

Glückliche Kodierung :)

0
Abhishek Singh

Ich muss herausfinden, wie ich speziell diejenigen erreichen kann, die neu in diesem Tool sind (wie ich).

C # -Code:

IWebElement ddl = ffDriver.FindElement(By.Id("ddlGoTo")); 
OpenQA.Selenium.Support.UI.SelectElement clickthis = new OpenQA.Selenium.Support.UI.SelectElement(ddl);
clickthis.SelectByText("Your Text");

hoffe das hilf anderen!

0
Nick Kahn
select = driver.FindElement(By.CssSelector("select[uniq id']"));
                selectElement = new SelectElement(select);
                var optionList =
                    driver.FindElements(By.CssSelector("select[uniq id']>option"));
                selectElement.SelectByText(optionList[GenerateRandomNumber(1, optionList.Count())].Text);
0
Emebet
public static void mulptiTransfer(WebDriver driver, By dropdownID, String text, By to)
{   
    String valuetext = null;
    WebElement element = locateElement(driver, dropdownID, 10);
    Select select = new Select(element);
    List<WebElement> options = element.findElements(By.tagName("option"));
    for (WebElement value: options) 
    {
        valuetext = value.getText();
        if (valuetext.equalsIgnoreCase(text))
        {
            try
            {
                select.selectByVisibleText(valuetext);
                locateElement(driver, to, 5).click();                           
                break;
            }
            catch (Exception e)
            {
                System.out.println(valuetext + "Value not found in Dropdown to Select");
            }       
        }
    }
}
0