2011-06-07 5 views
8

Después de un poco de ayuda, estoy escribiendo una prueba web funcional usando Geb y quiero probar el valor de atributo deshabilitado de un botón de envío de formulario tanto antes como después ha ocurrido un evento, el flujo debe ser el siguiente:Cómo usar Geb para verificar el valor del atributo del elemento después del evento de la página

  1. página de carga, botón de enviar se declara como discapacitados en el origen de la página por lo que debe ser inhabilitado por ejemplo, <input type="submit" class="submit" disabled="true"/>.
  2. Disponibilidad de una casilla de verificación en la página, esto debería resultar en una pieza de código jQuery ejecución que permita el botón de enviar discapacitados programáticamente usando: $('input.submit').attr('disabled', false);

Mi primer intento fue utilizar la afirmación $('input.submit')[email protected] == 'true', esto parecía trabajo para la verificación inicial después de la carga de la página; sin embargo, después de ejecutar mi código JQuery para habilitar el botón, una verificación posterior aún arroja el mismo resultado. Esto me ha llevado a preguntarme si este tipo de verificación solo puede informar el valor al momento de cargar la página y no ve ningún cambio programático posterior.

Luego descubrí la integración de jquery de Geb, esperaba poder usar esto para devolver el valor del botón de envío y hacer mi afirmación en este, p. $('input.submit').jquery.attr('disabled') == false sin embargo, la documentación de Geb confirma que todas las llamadas a la propiedad .jquery devuelven la instancia de Geb Navigator por lo que lamentablemente no creo que pueda devolver la información que deseo.

También he dudado si el código de JQuery estaba alternar el botón de envío estado deshabilitado, lo he probado extensamente usando Firebug y puedo confirmar que esto funciona perfectamente en el navegador, entonces sospecho que esto es un problema con mi comprensión de Geb o tal vez una limitación de Geb en sí?

Me parece que comprobar el valor de los atributos del elemento después de realizar alguna acción en una página puede ser un caso de uso común, por lo tanto, espero haber omitido alguna forma trivialmente simple de hacerlo. Estaría muy agradecido por cualquier información que me ayude a resolver este problema.

Saludos,

Edd

Respuesta

3

Retransmisión mi puesto en la lista de correo Geb:

Después de ejecutar el código jQuery que permite el botón, es posible que se está comprobando el resultado antes de la el código ha activado el botón? Por ejemplo, están haciendo algo como:

waitFor { $("input.submit")[email protected] == "false" } 
10

He hecho más pruebas y ahora he logrado un resultado satisfactorio. Yo estaba haciendo un par de cosas que ahora me parecen inproper, es decir, tratando de establecer el valor disabled atributo a los valores ilegales de verdadero y falso como esto:

$('input.submit').attr('disabled', true); 
$('input.submit').attr('disabled', false); 

Mirando el HTML forms specification se muestra el atributo discapacitados no tomar un valor, más bien su presencia sola indica que un elemento está deshabilitado.Modificar mi código en honor a esto y quitar el atributo para indicar la habilitación de un elemento parece haber hecho el truco:

$('input.submit').attr('disabled', true); 
//This time we remove the disabled attribute rather than setting it to false. 
$('input.submit').removeAttr('disabled'); 

Nota: Todavía estoy estableciendo el valor de discapacitados a true ya que no puedo determinar cómo establecer el atributo sin establecer un valor, vea this SO post para más detalles.

usando lo anterior ahora soy capaz de usar Geb hacer valer el estado desactivado/activado de elementos como este:

//Check that something is disabled. 
[email protected] == 'true' 

//Check that something is enabled. 
[email protected] == 'false' 

Nota: Geb parece requerir una cadena literal que indica el estado de espera en lugar de un valor lógico , que iirc hizo que mis afirmaciones fallaran.

Así que eso es todo, ahora todo funciona bien y estoy escribiendo muchas pruebas de Geb. Espero que esta explicación sea de alguna utilidad para otros.

Cuestiones relacionadas