2012-10-08 26 views
6

He estado trabajando con Selenium WebDriver desde hace unos meses y tengo un problema con un menú desplegable dentro de una aplicación web en la que estoy trabajando .Selenium WebDriver - No se puede cerrar el menú desplegable de selección en Chrome en Mac OS X

Lo que está sucediendo es que la prueba está abriendo la página, verificando varios elementos en la página encontrándolos y asegurándolos de que se muestran. Después de hacer eso, se ingresa texto en campos diferentes, luego se hace clic en el cuadro de selección de opciones para abrir el menú desplegable. A continuación, la prueba recorre todas las opciones en el menú desplegable hasta que encuentra la que necesita y luego hace clic en esa opción.

En este punto, la opción está seleccionada pero el menú desplegable no está cerrado.

He intentado hacer clic en la opción seleccionar de nuevo, pero esto no tiene ningún efecto, durante el resto de la prueba se navegan otras páginas y el menú no se cierra.

Luego la página se guarda y luego se navega fuera de. Sin embargo, el menú desplegable permanece hasta que se cierra el navegador.

Este es el código de la aplicación:

<select id="options" name="options" class="options"> 
<option value="option1 (auto)">option1 (auto)</option> 
<option value="option2">option2</option> 
<option value="option3">option3</option> 
</select> 

Respuesta

1

He resuelto el problema con una solución alternativa, ya que es la única manera que he encontrado para trabajar.

En primer lugar, gracias a eugene.polschikov por su respuesta, aunque no resolvió el problema, me abrió un poco los ojos, no tenía conocimiento de Action Builder, y me ha dado algunas buenas ideas sobre futuras pruebas. También gracias a todos los que leyeron esto y reflexionaron sobre una posible solución.

La solución que ahora está en su lugar es que la selección no se abre. La forma en que funciona el código es que abriría la lista y encontraría la que quería y haría clic en ella, en este punto la selección no se cerraría, por lo que ahora el código ya no abre la selección en primer lugar, hace clic en la opción oculta para seleccionarlo, no es 100% lo que quería, pero funciona.

Happy Programming, Ben.

2

la primera solución me gustaría probar es hacer clic en las opciones del menú de diferentes maneras. Selenium API nos proporciona esta posibilidad. 1) localizar, p. css selectores de los elementos.

String cssOption1 = "select[id='options']>option[value='option1 (auto)']"; 
String cssOption2 = "select[id='options']>option[value='option2']"; 
String cssOption3 = "select[id='options']>option[value='option3']"; 

Tampoco se olvide de verificar que ha encontrado elementos adecuadamente por ejemplo .en firepath, complemento Firebug en FFox: proper location on web element in firepath

enfoque 1

driver.findElement(By.cssSelector(cssOption2)).click(); 

enfoque 2 usando generador de acciones API

WebElement mnuOptionElement; 
mnuOptionElement = driver.findElement(By.cssSelector(cssOption2)); 
Actions builder = new Actions(driver); 
// Move cursor to the Main Menu Element 
builder.moveToElement(mnuOptionElement).click(); 

más información sobre las acciones Builder puede obtener here

enfoque 3 utilizando jsExecutor hacer clic en el elemento web. Siempre me funciona en todas las situaciones.

JavascriptExecutor js = (JavascriptExecutor) driver; 
     StringBuilder stringBuilder = new StringBuilder(); 
     stringBuilder.append("var x = $(\'"+cssOption2+"\');"); 
     stringBuilder.append("x.click();"); 
     js.executeScript(stringBuilder.toString()); 

Espero que esto funcione para usted

+0

Gracias por su respuesta, sin embargo, no importa lo que haga clic en el menú desplegable menú permanece abierto. También he probado diferentes formas de hacer clic en el botón para intentar cerrarlo, pero ay, no tuve suerte. –

+0

¿Has probado hacer clic usando javascript? es el tercero que describí –

+0

Sí, no estoy a la expectativa de la secuencia de comandos de Java, pero yo y un compañero de trabajo probamos JQuery y javascript y fue en vano. Siempre pudimos abrir el cuadro desplegable, pero nunca pudimos cerrarlo, intentamos presionar teclas y hacer clic en el mouse, pero no tuvimos suerte. Gracias de nuevo, –

0

Si un ser humano puede presionar Escape para salir del cuadro combinado, puede hacer que en selenio cambiando al elemento activo:

from selenium.webdriver.common.keys import Keys 
    element = driver.switch_to.active_element 
    element.send_keys(Keys.ESCAPE)  
Cuestiones relacionadas