Utilizar la UI Automation para pruebas automatizadas

NotaNota

Esta documentación está dirigida a desarrolladores de .NET Framework que desean usar las clases administradas de UI Automation definidas en el espacio de nombres System.Windows.Automation.Para obtener información actualizada sobre UI Automation, vea Windows Automation API: UI Automation.

En esta introducción se describe cómo utilizar Microsoft UI Automation como marco de trabajo para tener acceso mediante programación a escenarios de pruebas automatizadas.

UI Automation proporciona un modelo de objetos unificado que permite que todos los marcos de trabajo de user interface (UI) expongan funcionalidades complejas y enriquecidas de una manera accesible y fácil de automatizar.

UI Automation se desarrolló como sucesor de Microsoft Active Accessibility. Active Accessibility es un marco de trabajo existente diseñado para proporcionar una solución que permita hacer accesibles los controles y las aplicaciones. Active Accessibility no se ha diseñado teniendo en cuenta la automatización de pruebas, aunque con el tiempo ha asumido ese rol gracias a la gran similitud de requisitos de accesibilidad y automatización. UI Automation, además de proporcionar soluciones de accesibilidad más refinadas, se diseñó específicamente a fin de proporcionar funcionalidades robustas para pruebas automatizadas. Por ejemplo, Active Accessibility se basa en una interfaz única para exponer la información de la interfaz de usuario y recopilar la información que requieren los productos de AT; en cambio, UI Automation separa ambos modelos.

Para implementar UI Automation de forma que se pueda utilizar como una herramienta de pruebas automatizadas, se requiere un proveedor y un cliente. Los proveedores de UI Automation son aplicaciones como Microsoft Word, Excel y aplicaciones o controles de otros fabricantes basados en el sistema operativo Microsoft Windows. Los clientes de UI Automation incluyen scripts de pruebas automatizadas y aplicaciones de tecnología de ayuda.

NotaNota

El propósito de esta introducción es mostrar las capacidades nuevas y mejoradas para la realización de pruebas automatizadas de UI Automation.En esta introducción no se proporciona información sobre características de accesibilidad ni se aborda la accesibilidad a no ser que sea necesario.

Este tema contiene las secciones siguientes.

  • Automatización de la interfaz de usuario en un proveedor
  • Automatización de la interfaz de usuario en un cliente
  • Herramientas y tecnologías relacionadas
  • Seguridad
  • Temas relacionados

Automatización de la interfaz de usuario en un proveedor

Para automatizar la UI, un programador de una aplicación o control debe examinar qué acciones puede realizar un usuario final en el objeto de UI mediante una interacción estándar con el teclado y el mouse.

Una vez identificadas estas acciones clave, deben implementarse en el control los patrones de control de UI Automation correspondientes (es decir, los patrones de control que reflejan la funcionalidad y el comportamiento del elemento UI). Por ejemplo, la interacción del usuario con un control de cuadro combinado (como el cuadro diálogo Ejecutar) suele requerir que se expanda y contraiga el cuadro combinado para ocultar o mostrar una lista de elementos, que se seleccione un elemento de la lista o que se agregue un nuevo a través del teclado.

NotaNota

Con otros modelos de accesibilidad, los programadores deben recopilar directamente la información de los botones, menús u otros controles individuales.Desgraciadamente, cada tipo de control se presenta con docenas de pequeñas variaciones.Es decir, aunque diez variaciones de un mismo botón de comando funcionen de la misma manera y realicen la misma función, todas ellas deben tratarse como controles únicos.No hay ninguna manera de saber si estos controles son funcionalmente equivalentes.Los patrones de control se desarrollaron para representar estos comportamientos de control comunes.Para obtener más información, vea Información general acerca de los patrones de control de automatización de la interfaz de usuario.

Implementar la automatización de la interfaz de usuario

Como se mencionó anteriormente, sin el modelo unificado proporcionado por UI Automation, las herramientas de prueba y los programadores se ven obligados a conocer información específica del marco de trabajo para exponer las propiedades y los comportamientos de los controles de ese marco de trabajo. Dado que pueden existir varios marcos de trabajo de interfaz de usuario presentes al mismo tiempo en los sistemas operativos de Windows, incluidos Win32, Windows Forms y Windows Presentation Foundation (WPF), probar varias aplicaciones con controles que parecen similares puede resultar desalentador. Por ejemplo, en la tabla siguiente se muestran los nombres de propiedad específicos de cada marco de trabajo que se necesitan para recuperar el nombre (o el texto) asociado a un control de botón y se muestra su propiedad única equivalente en UI Automation.

Tipo de control de automatización de la interfaz de usuario

Marco de trabajo de la interfaz de usuario

Propiedad específica del marco de trabajo

Propiedad de automatización de la interfaz de usuario

Button

Windows Presentation Foundation

Content

NameProperty

Button

Win32

Caption

NameProperty

Imagen

HTML

alt

NameProperty

Los proveedores de UI Automation son responsables de asignar las propiedades específicas del marco de trabajo de sus controles a las propiedades equivalentes de UI Automation.

Encontrará información sobre cómo implementar UI Automation en un proveedor en Proveedores de UI Automation para código administrado. Hay información disponible sobre cómo implementar patrones de control en Patrones de control de UI Automation y en Modelo de texto de UI Automation.

Automatización de la interfaz de usuario en un cliente

El objetivo de gran cantidad de herramientas y escenarios de pruebas automatizadas es la manipulación coherente y repetible de la interfaz de usuario. Esto puede implicar pruebas unitarias de controles concretos que exijan incluso la grabación y reproducción de scripts de prueba que recorren en iteración una serie de acciones genéricas en un grupo de controles.

Una complicación que surge de las aplicaciones automatizadas es la dificultad de sincronizar una prueba con un destino dinámico. Por ejemplo, un control de cuadro de lista, como el contenido en el Administrador de tareas de Windows, que muestra una lista de aplicaciones que están actualmente en ejecución. Puesto que los elementos del cuadro de lista se actualizan dinámicamente fuera del control de la aplicación de prueba, no se puede repetir con coherencia la selección de un elemento concreto del cuadro de lista. Otros problemas similares pueden presentarse al intentar repetir cambios de foco simples en una UI que está fuera del control de la aplicación de prueba.

Acceso mediante programación

El acceso mediante programación permite imitar, a través de código, cualquier interacción y experiencia expuesta mediante la entrada por mouse y teclado tradicional. UI Automation permite el acceso mediante programación a través de cinco componentes:

Propiedades clave para la automatización de pruebas

La capacidad de identificar singularmente y, a continuación, localizar cualquier control en la UI constituye la base para que las aplicaciones de pruebas automatizadas funcionen en esa UI. Para facilitar esta tarea, existen varias propiedades de Microsoft UI Automation utilizadas por los clientes y los proveedores.

AutomationID

Identifica de manera inequívoca un elemento de automatización de la interfaz de usuario de los elementos de su mismo nivel. AutomationIdProperty no se traduce, a diferencia de una propiedad como NameProperty que suele traducirse si un producto se distribuye en varios idiomas. Vea Utilizar la propiedad AutomationID.

NotaNota

AutomationIdProperty no garantiza una identidad única para todo el árbol de automatización.Por ejemplo, una aplicación puede contener un control de menú con varios elementos de menú de nivel superior que, a su vez, contiene varios elementos de menú secundarios.Estos elementos de menú secundarios pueden identificarse mediante un esquema genérico como "Elemento1, Elemento2, Elemento3, etc.", lo que permite que existan identificadores de elementos de niveles secundarios que estén duplicados en los elementos del nivel superior.

ControlType

Identifica el tipo de control representado por un elemento de automatización. Conocer el tipo de control permite deducir información significativa. Vea Información general sobre tipos de control de UI Automation.

NameProperty

Se trata de una cadena de texto que identifica o explica un control. NameProperty debe utilizarse con precaución, porque es posible que se haya traducido. Vea Información general acerca de las propiedades de UI Automation.

Implementar la automatización de la interfaz de usuario en una aplicación de prueba

Agregue las referencias de automatización de la interfaz de usuario.

Aquí se muestran los archivos dll de UI Automation necesarios para los clientes de UI Automation.

  • UIAutomationClient.dll proporciona acceso a las API del cliente de UI Automation.

  • UIAutomationClientSideProvider.dll proporciona la capacidad de automatizar los controles de Win32. Vea Compatibilidad de UI Automation con controles estándar.

  • UIAutomationTypes.dll proporciona acceso a los tipos específicos definidos en UI Automation.

Agregue el espacio de nombres System.Windows.Automation.

Este espacio de nombres contiene todo lo que necesitan los clientes de Automatización de la interfaz de usuario para utilizar las funciones de UI Automation, excepto el tratamiento de texto.

Agregue el espacio de nombres System.Windows.Automation.Text.

Este espacio de nombres contiene todo lo que necesitan los clientes de UI Automation para utilizar las funciones de tratamiento de texto de UI Automation.

Busque controles de interés.

Los scripts de pruebas automatizadas buscan los elementos de UI Automation que representan controles de interés dentro del árbol de automatización.

Hay varias maneras de obtener los elementos de Automatización de la interfaz de usuario con código.

  • Consulte la UI mediante una instrucción Condition. Aquí es donde suele utilizarse la propiedad AutomationIdProperty, que es neutral respecto al idioma.

NotaNota
AutomationIdProperty puede obtenerse mediante una herramienta como UISpy.exe (UI Spy), capaz de detallar las propiedades de UI Automation de un control.
  • Utilice la clase TreeWalker para recorrer todo el árbol de UI Automation o alguno de sus subconjuntos.

  • Realice el seguimiento del foco.

  • Utilice el indicador HWND del control.

  • Utilice la ubicación en pantalla, por ejemplo, la ubicación del cursor del mouse.

Vea Obtener elementos de UI Automation.

Obtenga patrones de control.

Los patrones de control exponen comportamientos comunes de controles con una función similar.

Después de localizar los controles que requieren comprobación, los scripts de pruebas automatizadas obtienen los patrones de control de interés de esos elementos de UI Automation. Por ejemplo, el patrón de control de InvokePattern  de la funcionalidad típica de un botón o el patrón de control de WindowPattern de la funcionalidad de una ventana.

Vea Información general acerca de los patrones de control de automatización de la interfaz de usuario.

Automatice la interfaz de usuario.

Los scripts de pruebas automatizadas pueden controlar cualquier UI de interés de un marco de trabajo de la UI mediante la información y la funcionalidad expuestas por los patrones de control de UI Automation.

Herramientas y tecnologías relacionadas

Existen varias herramientas y tecnologías relacionadas que admiten pruebas automatizadas con UI Automation.

  • UISpy.exe (UI Spy) es una aplicación de graphical user interface (GUI) que se puede utilizar para reunir información de UI Automation para la implementación y depuración del proveedor y del cliente. UI Spy se incluye en el Windows Software Development Kit (SDK).

  • UIAutoCmd es una herramienta de línea de comandos con funciones similares a UI Spy.

  • MSAABridge expone la información de UI Automation a los clientes de Active Accessibility. El objetivo principal de establecer un puente entre UI Automation y Active Accessibility es permitir que los clientes de Active Accessibility existentes puedan interactuar con cualquier marco de trabajo que haya implementado la UI Automation.

Seguridad

Para obtener información sobre seguridad, vea Información general sobre la seguridad de UI Automation.

Vea también

Otros recursos

Fundamentos de UI Automation