2011-10-08 15 views
11

Estoy tratando de seleccionar un elemento de una lista de selección en selenio usando java con sintaxis basada en WebDriver.¿Cómo usar la lista de selección en selenio?

Tengo la lista de selección por

elements = driver.findElements(By.xpath("//form[@action='inquiry/']/p/select[@name='myselect']")); 
    if (elements.size() == 0) { 
     return false; 
    } 
    if (guests != null) { 
     //what do I do here? 
    } 

¿Cómo se hace eso?

+0

¿Qué es 'guests! = Null'? ¿Quiere decir 'elements! = Null'? – nilesh

Respuesta

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

Si esto es más lento, y luego considerar algo así como

dropDown.selectByValue(value); 
or 

dropDown.selectByVisibleText(text); 
1
element = driver.findElements(By.xpath("//form[@action='inquiry/']/p/select[@name='myselect']/option[*** your criteria ***]")); 
if (element != null) { 
    element.click(); 
} 

encontrar la opción, y luego click que

6

Una pequeña nota al margen que se aplica a Java:

En mi caso, cuando estaba escribiendo la prueba según el ejemplo de @nilesh, recibí un error extraño, t si el constructor no es válido La importación fue:

import org.openqa.jetty.html.Select; 

Si le sucede que tiene errores similares, hay que corregir que la importación a esto:

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

Si utiliza esta segunda importación, todo saldrá bien.

+1

No sé ustedes, pero personalmente, odio que Java tenga múltiples objetos con nombres idénticos en diferentes espacios de nombres –

0

tratar de hacerlo de esta manera:

// método para seleccionar un elemento del menú desplegable

public void selectDropDown (Valor de cadena) {

webElement findDropDown=driver.findElements(By.id="SelectDropDowm"); 
    wait.until(ExpectedConditions.visibilityOf(findDropDown)); 
    super.highlightElement(findDropDown); 
    new Select(findDropDown).selectByVisibleText(Value); 
} 

// método para resaltar la elemento

pública highlightElement vacío (elemento WebElement) {

for (int i = 0; i < 2; i++) { 

     JavascriptExecutor js = (JavascriptExecutor) this.getDriver(); 
     js.executeScript(
       "arguments[0].setAttribute('style', arguments[1]);", 
       element, "color: yellow; border: 3px solid yellow;"); 
     js.executeScript(
       "arguments[0].setAttribute('style', arguments[1]);", 
       element, ""); 

    } 

} 
Cuestiones relacionadas