2 Stimmen

Webdriver Dropdown-Liste kann nicht ausgewählt werden

Ich kann mit meiner Webdriver-Methode keine HTML-Dropdown-Liste auswählen. Was war in meinem Code falsch? Könnten Sie mir einige Hinweise geben.

 <select>
<option value="32">32</option>

<option value="34">34</option>

<option value="36">36</option>

</select>

public static List<WebElement> chooseSize(Integer size){
WebElement select = findElement(By.xpath(DropDown_Article_Size_XPATH_ID));
List<WebElement> options = select.findElements(By.tagName("option"));
for(WebElement option : options){
    if(option.getText().equals(size)){
        option.isSelected(); // or .click()?
       }
}
return options;
}

3voto

In WebDriver gibt es eine Support-Klasse, die Ihnen dabei helfen kann: "org.openqa.selenium.support.ui.Select".

So verwenden Sie es:

// First, get the WebElement for the select tag
WebElement selectElement = driver.findElement(By.xpath(DropDown_Article_Size_XPATH_ID));

// Then instantiate the Select class with that WebElement
Select select = new Select(selectElement);

// Get a list of the options
List<WebElement> options = select.getOptions();

// For each option in the list, verify if it's the one you want and then click it
for (WebElement we : options) {
    if (we.getText().equals(valueToSelect)) {
        we.click();
        break;
    }
}

2voto

dmp Punkte 364
Select select = new Select(driver.findElement(By.xpath("Xpath_of_Select_Element")));
select.selectByVisibleText("Option_to_Select");

Dies ist der einfachste Weg, um eine Option aus einer Dropdown-Liste auszuwählen

1voto

Alberto Punkte 4811

Für solche Fälle verwende ich xpath-Ausdrücke. Sie werden eine Menge Code sparen!

Für das, wonach Sie fragen, sollte dies genügen (ich gehe davon aus, dass Ihr xpath richtig auf die entsprechende select ):

// Click select first:
// (See http://code.google.com/p/selenium/issues/detail?id=2112)
findElement(By.xpath(DropDown_Article_Size_XPATH_ID)).click();

// Then click option:
String xpathOption = String.format("%s/option[text()='%d']",
    DropDown_Article_Size_ID, size);
log.debug("Selecting option by text '{}' using xpath '{}'", size, xpathOption);
findElement(By.xpath(xpathOption)).click();

Übrigens, ich verstehe nicht, warum Ihr chooseSize gibt die Liste aller Optionen zurück. Sie sollten die Methode wahrscheinlich in etwas Sinnvolles umbenennen ( getOptionsBySize zum Beispiel, wenn Sie dies wünschen).

1voto

user2073203 Punkte 11

Bit Modifikation es funktioniert für mich, vielen Dank so ein einfacher Code es tut die Arbeit.

Select select = new Select(driver.findElement(By.name("Status_operator")));
select.selectByValue("=");

0voto

artbristol Punkte 31293

Haben Sie versucht setSelected() ? isSelected() ist ein Getter, so dass er nichts ändert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X