Tengo un menú desplegable con 2 opciones (opción 1 y opción 2). Quiero obtener el NOMBRE de la primera opción y compararlo con una cadena. Intenté algo como esto pero no funcionó para mí:

The drop down menu has two items:
            -first(default) is "simplex"
            -second is "duplex"

El menú desplegable HTML es:

    <div class="fieldHelp " id="fieldHelp8352">
<script></script>
<select id="8352" class="lazy-droplist" aria-labelledby="8351" name="pMode:value" style="display: none;">

<option selected value="0">simplex</option>

<option value="1">duplex</option>
</select>
<label id="extendClickArea_8352" style="height:40px; width:100%; position: relative;" class="lazy-droplist">
<span class="ui-selectmenu-button lazy-droplist" tabindex="0" id="8352-button" role="combobox" aria-expanded="false" aria-  autocomplete="list" aria-owns="8352-menu" aria-haspopup="true" style="width: 100%;" aria-activedescendant="ui-id-1003" aria-    labelledby="ui-id-1003" aria-disabled="false" data-modalfocus="">
<span class="ui-icon ui-icon-triangle-1-s"></span>
<span class="ui-selectmenu-text">simplex</span>
</span>
</label>
<div id="bs-help-modal-sm-8352" style="display: none;" class="bs-help-modal-sm-8352 ui-draggable" tabindex="-1" role="dialog"   aria-labelledby="mySmallModalLabel" aria-hidden="true">
<div class="modal-content"><div class="modal-header ui-draggable-handle">
<button type="button" class="close" aria-label="Close" onclick="closeHelpPopup(event, $('#bs-help-modal-sm-8352'));">
<span aria-hidden="true">×</span></button>
.....
.....
</div>
<script>
$('#bs-help-modal-sm-8352').draggable({ handle: '.modal-header' });
</script>
</div>

Noté que el código de alguna manera está en gris, inactivo pero cuando intenté extraer la prueba "simplex", no dije que el menú está oculto o algo así ...

El código Java es:

            Select select = new Select(driver.findElement(By.name("simplex")));
            WebElement option = select.getFirstSelectedOption();
            String defaultItem = option.getText();
            System.out.println(defaultItem);->this variable is empty :(

            if (defaultItem == "simplex") {
                System.out.println("Is Simplex");
            } else {

                System.out.println("Is Duplex");

Donde hago algo mal porque el elemento predeterminado está vacío ... Esto

0
corny 19 feb. 2018 a las 09:29

2 respuestas

La mejor respuesta

Resuelto. La solucion fue:

String Text = driver.findElement(By.id("the_direct_path_to_this_span_<span class="ui-selectmenu-text">simplex</span>")).getText();
if(text.equals("Simplex"))
{
System.out.println("Is Simplex");
} else {

System.out.println("Is NOT Simplex");
}
0
corny 23 feb. 2018 a las 06:49

En su caso, no puedo ver el atributo de nombre con "simplex" en ninguna parte del código proporcionado por usted. Además, un problema que puedo ver en el código HTML es que no tiene ningún valor para un atributo seleccionado, por eso obtiene el valor vacío:

<option selected="" value="0">simplex</option>

Pruebe el siguiente método:

Select select = new Select(driver.findElement(By.id("8352")));
List<WebElement> options =  select.getOptions();
int optionssize=    options.size();
for(int i=0;i<optionssize;i++)
{
  if(options.get(i).getText().equals("Simplex"))
  {
    System.out.println("Is Simplex available at"+i);
    break;
  }
}
0
Deepan 19 feb. 2018 a las 14:39