Share via


Hacer que la prueba de IU codificada espere por eventos concretos durante la reproducción

En una reproducción de prueba de UI codificada, puede indicar a la prueba que espere a que se produzcan ciertos eventos, como que se muestre una ventana, que se oculte la barra de progreso, etc. Para ello, use el método UITestControl.WaitForControlXXX() adecuado, como se describe en la tabla siguiente. Para obtener un ejemplo de una prueba de UI codificada que espera a que se habilite un control utilizando el método WaitForControlEnabled(), vea Tutorial: Crear, modificar y mantener una prueba de IU codificada.

Métodos UITestControl.WaitForControlXXX()

Métodos UITestControl.WaitForControlXXX()

Descripción

WaitForControlReady()

Espera hasta que el control esté listo para aceptar acciones del mouse y del teclado. El motor llama implícitamente a esta API para que todas las acciones esperen hasta que el control esté listo antes de hacer cualquier operación. Sin embargo, en algún escenario esotérico, tal vez tenga que hacer la llamada explícita.

WaitForControlEnabled()

Espera hasta que el control esté habilitado cuando el asistente está haciendo alguna validación asincrónica de la entrada realizando llamadas al servidor. Por ejemplo, el método puede esperar hasta que el botón Siguiente del asistente esté habilitado (). Para obtener un ejemplo de este método, vea Tutorial: Crear, modificar y mantener una prueba de IU codificada.

WaitForControlExist()

Espera hasta que el control aparezca en la interfaz de usuario. Por ejemplo, espera un cuadro de diálogo de error después de que la aplicación haya hecho la validación de los parámetros. El tiempo que lleva la validación es variable. Puede utilizar este método para esperar el cuadro de diálogo de error.

WaitForControlNotExist()

Espera hasta que el control desaparezca de la interfaz de usuario. Por ejemplo, puede esperar hasta que desaparezca la barra de progreso.

WaitForControlPropertyEqual(String, Object)

Espera hasta que la propiedad especificada del control tenga el valor especificado. Por ejemplo, espera a que el texto del estado cambie a Listo.

WaitForControlPropertyNotEqual(String, Object)

Espera hasta que la propiedad especificada del control tenga el valor contrario del especificado. Por ejemplo, espera a que el cuadro de edición no sea de solo lectura, es decir, modificable.

WaitForControlCondition(Predicate<UITestControl>)

Espera a que los retornos de predicado especificados sean true. Esto puede usarse en operaciones de espera complejas. Por ejemplo, puede esperar hasta que el texto de estado sea Succeeded o Failed como se muestra en el código siguiente:

// Define the method to evaluate the condition 
private static bool IsStatusDone(UITestControl control) 
{ 
    WinText statusText = control as WinText; 
    return statusText.DisplayText == "Succeeded" || statusText.DisplayText == "Failed"; 
} 
// In test method, wait till the method evaluates to true 
statusText.WaitForControlCondition(IsStatusDone);

WaitForCondition<T>(T, Predicate<T>)

Todos los métodos anteriores son métodos de instancia de UITestControl. Se trata de un método estático. Este método también espera a que el predicado especificado sea true pero se puede utilizar para la operación de espera compleja (como condiciones OR) en varios controles. Por ejemplo, puede esperar hasta que el texto del estado sea Succeeded o hasta que aparezca un mensaje de error, como se muestra en el siguiente código:

// Define the method to evaluate the condition 
private static bool IsStatusDoneOrError(UITestControl[] controls) 
{ 
    WinText statusText = controls[0] as WinText; 
    WinWindow errorDialog = controls[1] as WinWindow; 
    return statusText.DisplayText == "Succeeded" || errorDialog.Exists; 
} 
// In test method, wait till the method evaluates to true 
UITestControl.WaitForCondition<UITestControl[]>(new UITestControl[] { statusText, errorDialog }, IsStatusDoneOrError); 

Todos estos métodos tienen el siguiente comportamiento:

  • Los métodos devuelven verdadero si la espera es correcta y falso si la espera dio error.

  • El tiempo de espera implícito para la operación de espera lo especifica la propiedad WaitForReadyTimeout. El valor predeterminado de esta propiedad es 60000 milisegundos (un minuto).

  • Los métodos tienen una sobrecarga para aceptar el tiempo de espera explícito en milisegundos. Sin embargo, cuando la operación de espera produce una búsqueda implícita para el control o cuando la aplicación no está disponible, el tiempo de espera real podría ser superior al tiempo de espera especificado.

Las funciones anteriores son eficaces y flexibles y satisfacen casi todas las condiciones. Sin embargo, en caso de que estos métodos no satisfagan sus necesidades y necesite codificar Wait(Int32)u o Sleep(Int32) en el código, se recomienda que utilice () Playback.Wait en lugar de Thread.Sleep () API. Las razones para esto son:

  • Puede utilizar la propiedad ThinkTimeMultiplier para modificar la duración de la suspensión. De forma predeterminada, esta variable es 1 pero puede aumentar o disminuir para cambiar el tiempo de espera en el código. Por ejemplo, si está haciendo pruebas específicamente a través de una red lenta o en algún otro caso del rendimiento lento, puede cambiar esta variable en un lugar (o incluso en el archivo de configuración) a 1,5 para agregar 50% de espera adicional en todas partes.

  • Playback.Wait() llama internamente a Thread.Sleep() (después del cálculo anterior) en fragmentos pequeños en un bucle for mientras comprueba la operación del usuario de cancelar o interrumpir. Es decir, Playback.Wait() permite cancelar la reproducción antes del final de la espera mientras que la suspensión no lo hace o produce una excepción.

Nota

El editor de pruebas de IU codificadas permite modificar fácilmente este tipo de pruebas. Con el Editor de pruebas de IU codificadas puede buscar, ver y modificar métodos de prueba. También puede editar acciones de interfaz de usuario y los controles asociados en la asignación de controles de IU. El editor de pruebas de IU codificadas se incluye en Feature Pack 2 de Microsoft Visual Studio 2010. Para descargar el Feature Pack, debe tener Visual Studio 2010 Ultimate, Visual Studio 2010 Premium o Test Professional 2010 con una suscripción a MSDN, Microsoft BizSpark o MSDN Academic Alliance. Para obtener más información, vea Editar pruebas de IU codificadas mediante el editor de pruebas de IU codificadas y Microsoft Visual Studio 2010 Feature Pack 2.

Vea también

Tareas

Cómo: Crear una prueba de IU codificada

Conceptos

Probar la interfaz de usuario con pruebas de IU automatizadas

Configuraciones y plataformas compatibles con las pruebas de IU codificadas y las grabaciones de acciones

Otros recursos

Tutorial: Crear, modificar y mantener una prueba de IU codificada

Anatomía de una prueba de IU codificada