Utilizar la UI Automation para pruebas automatizadas

Nota

Esta documentación está dirigida a los desarrolladores de .NET Framework que quieran usar las clases de automatización de la interfaz de usuario administradas definidas en el espacio de nombres System.Windows.Automation. Para ver la información más reciente acerca de la automatización de la interfaz de usuario, consulte Windows Automation API: automatización de la interfaz de usuario.

En esta introducción se describe cómo Automatización de la interfaz de usuario de Microsoft puede ser de utilidad como marco de trabajo para el acceso mediante programación en escenarios de pruebas automatizadas.

Automatización de la interfaz de usuario ofrece un modelo de objetos unificado que permite a todos los marcos de trabajo de interfaz de usuario exponer funcionalidades complejas y enriquecidas de una manera accesible y fácil de automatizar.

Automatización de la interfaz de usuario se desarrolló como sucesor de Microsoft Active Accessibility. Active Accessibility es un marco de trabajo existente diseñado para ofrecer una solución para hacer que los controles y las aplicaciones sean accesibles. Active Accessibility no se diseñó teniendo en cuenta la automatización de pruebas incluso cuando evolucionó hacia ese rol debido a los requisitos de accesibilidad y automatización muy similares. Automatización de la interfaz de usuario, además de proporcionar soluciones más refinadas para mejorar la accesibilidad, se ha diseñado de manera específica para ofrecer una sólida funcionalidad para pruebas automatizadas. Por ejemplo, Active Accessibility se basa en una única interfaz tanto para exponer información sobre la interfaz de usuario como para recopilar la información necesaria para los productos de AT; Automatización de la interfaz de usuario separa los dos modelos.

Se requieren tanto un proveedor como un cliente para implementar Automatización de la interfaz de usuario para que sea útil como herramienta de pruebas automatizadas. Los proveedores de automatización de la interfaz de usuario son aplicaciones como Microsoft Word, Excel y otras aplicaciones de terceros o controles basados en el sistema operativo Microsoft Windows. Los clientes de automatización de interfaz de usuario incluyen scripts de pruebas y aplicaciones de tecnología de asistencia.

Nota

El propósito de esta información general es mostrar las capacidades de pruebas automatizadas nuevas y mejoradas de Automatización de la interfaz de usuario. Esta información general no está pensada para ofrecer información sobre las características de accesibilidad y no abordará la accesibilidad más allá de cuando sea necesario.

Automatización de la interfaz de usuario en un proveedor

Para que se automatice una interfaz de usuario, un desarrollador de una aplicación o control debe mirar las acciones que usuario final puede llevar a cabo en el objeto de interfaz de usuario mediante la interacción del teclado y del mouse estándar.

Cuando se hayan identificado estas acciones de claves, los patrones de control Automatización de la interfaz de usuario correspondientes (es decir, los patrones de control que reflejan la funcionalidad y el comportamiento del elemento de la interfaz de usuario) deben implementarse en el control. Por ejemplo, la interacción del usuario con un control de cuadro combinado (por ejemplo, el cuadro de diálogo Ejecutar) suele implicar expandir y contraer el cuadro combinado para ocultar o mostrar una lista de elementos, seleccionar un elemento de esa lista o agregar un nuevo valor mediante la entrada del teclado.

Nota

Con otros modelos de accesibilidad, los desarrolladores deben recopilar información directamente desde distintos botones, menús u otros controles individuales. Lamentablemente, cada tipo de control se presenta con docenas de pequeñas variaciones. Es decir, aunque diez variaciones de un pulsador pueden funcionar de la misma manera y realizar la misma función, todas deben tratarse como controles únicos. No hay ninguna manera de saber que estos controles sean funcionalmente equivalentes. Los patrones de control se desarrollaron para representar estos comportamientos de control comunes. Para obtener más información, consulta UI Automation Control Patterns Overview.

Implementación de automatización de interfaz de usuario

Como se ha mencionado anteriormente, sin el modelo unificado ofrecido por Automatización de la interfaz de usuario, las herramientas de prueba y los desarrolladores deben conocer la información específica del marco de trabajo para exponer propiedades y comportamientos de los controles en ese marco de trabajo. Dado que puede haber varios marcos de trabajo diferentes de interfaz de usuario presentes en cualquier momento único dentro de sistemas operativos Windows, incluidos Win32, Windows Forms y Windows Presentation Foundation (WPF), puede resultar una tarea desalentadora probar varias aplicaciones con controles que parezcan similares. Por ejemplo, en la siguiente tabla se describen los nombres de propiedades específicas del marco de trabajo necesarias para recuperar el nombre (o el texto) asociado a un control de botón y se muestra la única propiedad Automatización de la interfaz de usuario equivalente.

Tipo de control de automatización de interfaz de usuario Marco de interfaz de usuario Propiedad específica de marco de trabajo Propiedad de automatización de interfaz de usuario
Botón Windows Presentation Foundation Contenido NameProperty
Botón Win32 Caption NameProperty
Imagen HTML alt NameProperty

Los proveedores de Automatización de la interfaz de usuario son responsables de asignar las propiedades específicas del marco de trabajo de sus controles a las propiedades de Automatización de la interfaz de usuario equivalentes.

Encontrará la información sobre la implementación de Automatización de la interfaz de usuario en Proveedores de Automatización de la interfaz de usuario para código administrado. La información sobre la implementación de patrones de control está disponible en UI Automation Control Patterns y UI Automation Text Pattern.

Automatización de la interfaz de usuario en un cliente

El objetivo de muchos escenarios y herramientas de pruebas automatizadas es la manipulación coherente y repetible de la interfaz de usuario. Esto puede incluir controles específicos para pruebas de unidad a través de la grabación y reproducción de scripts de pruebas que recorrer 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 incluido en el Administrador de tareas de Windows, que muestra una lista de aplicaciones actualmente en ejecución. Dado que los elementos del cuadro de lista se actualizan de manera dinámica fuera del control de la aplicación de prueba, resulta imposible repetir la selección de un elemento específico en el cuadro de lista con coherencia. También pueden surgir problemas similares al intentar repetir cambios de enfoque simples en una interfaz de usuario que se encuentra fuera del control de la aplicación de prueba.

Acceso mediante programación

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

  • El árbol de Automatización de la interfaz de usuario facilita la navegación por la estructura de la interfaz de usuario. El árbol se crea a partir de la colección de hWnd. Para obtener más información, vea UI Automation Tree Overview

  • Los elementos de automatización son componentes individuales en la interfaz de usuario. A menudo pueden ser más granulares que un hWnd. Para obtener más información, consulta UI Automation Control Types Overview.

  • Las propiedades de Automatización proporcionan información específica sobre los elementos de la interfaz de usuario. Para obtener más información, consulta UI Automation Properties Overview.

  • Los patrones de control definen un aspecto concreto de la funcionalidad de un control; puede constar de propiedad, método, evento e información de estructura. Para obtener más información, consulta UI Automation Control Patterns Overview.

  • Los eventos de automatización ofrecen información y notificaciones de eventos. Para obtener más información, consulta UI Automation Events Overview.

Propiedades de clave para la automatización de pruebas

La capacidad de identificar de forma exclusiva y de encontrar posteriormente cualquier control dentro de la interfaz de usuario ofrece la base para que las aplicaciones de pruebas automatizadas operen en esa interfaz de usuario. Hay varias propiedades de Automatización de la interfaz de usuario de Microsoft que usan los clientes y proveedores que ayudan en esto.

AutomationID

Identifica de manera única un elemento de automatización de sus elementos del mismo nivel. AutomationIdProperty no se localiza, a diferencia de una propiedad como NameProperty que suele localizarse si un producto se distribuye en varios idiomas. Vea Use the AutomationID Property.

Nota

AutomationIdProperty no garantiza una identidad única en 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, tienen varios elementos de menú secundarios. Estos elementos de menú secundarios pueden identificarse mediante un esquema genérico como "Elemento1, elemento 2, Item3, etc.", lo que permite identificadores duplicados para elementos secundarios en los elementos del menú de nivel superior.

ControlType

Identifica el tipo de control representado por un elemento de automatización. Se puede deducir información significativa del conocimiento del tipo de control. Vea UI Automation Control Types Overview.

NameProperty

Es una cadena de texto que identifica o explica un control. NameProperty debe usarse con precaución, ya que se puede localizar. Vea UI Automation Properties Overview.

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

Paso Descripción
Agregue las referencias de automatización de interfaz de usuario. Aquí se muestran las dll de Automatización de la interfaz de usuario necesarias para los clientes de automatización de la interfaz de usuario.

- UIAutomationClient.dll ofrece acceso a las API de Automatización de la interfaz de usuario del lado de cliente.
-UIAutomationClientSideProvider.dll ofrece la capacidad de automatizar controles de Win32. Vea UI Automation Support for Standard Controls.
- UIAutomationTypes.dll ofrece acceso a los tipos específicos definidos en Automatización de la interfaz de usuario.
Agregue el espacio de nombres System.Windows.Automation . Este espacio de nombres contiene todo lo que los clientes de Automatización de la interfaz de usuario necesitan para usar las capacidades de Automatización de la interfaz de usuario excepto el control del texto.
Agregue el espacio de nombres System.Windows.Automation.Text . Este espacio de nombres contiene todo lo que un cliente de Automatización de la interfaz de usuario necesita para usar las capacidades de control de texto de Automatización de la interfaz de usuario.
Busque controles de interés. Los scripts de pruebas automatizadas localizan elementos de automatización de la interfaz de usuario que representan controles de interés dentro del árbol de automatización.

Hay varias maneras de obtener elementos de automatización de interfaz de usuario con código.

- Consulta la interfaz de usuario mediante una instrucción Condition. Normalmente es donde se usa AutomationIdProperty independiente del lenguaje. Nota: Un AutomationIdProperty se puede obtener mediante una herramienta como Inspect.exe que es capaz de detallar las propiedades Automatización de la interfaz de usuario de un control.

- Use la clase TreeWalker para recorrer todo el árbol de Automatización de la interfaz de usuario o un subconjunto de los mismos.
- Realice un seguimiento del enfoque.
- Use el hWnd del control.
- Utilice la ubicación de la pantalla, como la ubicación del cursor del mouse.

Vea Obtaining UI Automation Elements
Obtenga patrones de control. Los patrones de control exponen comportamientos comunes para controles de funciones similares.

Después de encontrar los controles que requieren pruebas, los scripts de pruebas automatizadas obtienen los patrones de control de interés de los elementos de automatización de la interfaz de usuario. Por ejemplo, el patrón de control InvokePattern para la funcionalidad de botón normal o el patrón de control WindowPattern para la funcionalidad de la ventana.

Vea UI Automation Control Patterns Overview.
Automatice la interfaz de usuario. Los scripts de pruebas automatizadas pueden controlar ahora cualquier interfaz de usuario de interés a partir de un marco de trabajo de interfaz de usuario mediante la información y la funcionalidad expuestas por los patrones de control de Automatización de la interfaz de usuario.

Hay una serie de tecnologías y herramientas relacionadas que admiten pruebas automatizadas con Automatización de la interfaz de usuario.

  • Inspect.exe es una aplicación de interfaz gráfica de usuario (GUI) que se puede usar para recopilar información de Automatización de la interfaz de usuario para la depuración y el desarrollo del proveedor y el cliente. Inpect.exe se incluye en Windows SDK.

  • MSAABridge expone información de la Automatización de la interfaz de usuario a los clientes de Active Accessibility. El objetivo principal de crear un puente entre Automatización de la interfaz de usuario y Active Accessibility es permitir a los clientes existentes de Active Accessibility la capacidad de interactuar con cualquier marco de trabajo que ha implementado Automatización de la interfaz de usuario.

Seguridad

Para obtener información de seguridad, vea UI Automation Security Overview.

Consulte también