Compartir a través de


Utilizar la UI Automation para pruebas automatizadas

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 proporciona un modelo de objetos unificado que permite a todos los marcos de interfaz de usuario exponer funcionalidades complejas y enriquecidas de forma fácil y accesible.

Automatización de la interfaz de usuario se desarrolló como sucesor de Microsoft Active Accessibility, un marco diseñado para proporcionar una solución para hacer que los controles y las aplicaciones sean accesibles. Microsoft Active Accessibility no se diseñó teniendo en cuenta la automatización de pruebas, aunque evolucionó en ese rol debido a los requisitos similares de accesibilidad y automatización. Automatización de la interfaz de usuario está diseñado específicamente para proporcionar una funcionalidad sólida para pruebas automatizadas, además de proporcionar soluciones más refinadas para la accesibilidad. Por ejemplo, La accesibilidad activa de Microsoft se basa en una sola interfaz para exponer información sobre la interfaz de usuario y recopilar la información necesaria para los productos tecnológicos de asistencia; Automatización de la interfaz de usuario separa los dos modelos.

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

En este tema se incluyen las siguientes secciones.

Automatización de la interfaz de usuario en proveedores

Para automatizar un elemento de la interfaz de usuario, el desarrollador debe examinar las acciones que un usuario final puede realizar en el objeto de interfaz de usuario mediante la interacción estándar del teclado y el mouse. Una vez identificadas estas acciones clave, los patrones de control Automatización de la interfaz de usuario 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 normalmente implica expandir y contraer el cuadro combinado para mostrar u ocultar una lista de elementos, seleccionar un elemento de la lista o agregar un nuevo valor a través de la entrada del teclado.

Con otros modelos de accesibilidad, los desarrolladores deben recopilar información directamente desde distintos botones, menús u otros controles individuales. Cada tipo de control viene en docenas de variaciones menores. En otras palabras, aunque 10 variaciones de un botón de inserción funcionen de la misma manera y realicen la misma función, todas deben tratarse como controles únicos. No hay ninguna manera de saber que estos controles sean funcionalmente equivalentes. Automatización de la interfaz de usuario patrones de control se desarrollaron para representar estos comportamientos de control comunes. Para obtener más información, consulta UI Automation Control Patterns Overview.

Sin el modelo unificado de patrones de control proporcionados por Automatización de la interfaz de usuario, las herramientas de prueba y los desarrolladores deben tener información específica del marco para exponer propiedades y comportamientos de control en ese marco. Dado que varios marcos de interfaz de usuario diferentes pueden estar presentes al mismo tiempo en sistemas operativos Windows, como Microsoft Win32, Windows Forms y Windows Presentation Foundation (WPF), puede ser una tarea intimidante probar varias aplicaciones con controles que parecen similares. Por ejemplo, en la tabla siguiente se enumeran los nombres de propiedad específicos del marco necesarios para recuperar el nombre o el texto asociado a un control de botón y se muestra la propiedad Automatización de la interfaz de usuario equivalente.

Tipo de control Marco de interfaz de usuario Propiedad específica del marco Propiedad de la Automatización de la interfaz de usuario
Botón WPF Contenido Name (propiedad)
Botón Win32 Caption Name (propiedad)
Imagen HTML alt Name (propiedad)

 

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. Para obtener información sobre cómo implementar Automatización de la interfaz de usuario en un proveedor, consulte Automatización de la interfaz de usuario Guía del programador del proveedor. Para obtener información sobre cómo implementar patrones de control, vea Implementación de patrones de control Automatización de la interfaz de usuario.

Automatización de la interfaz de usuario en clientes

El objetivo de las herramientas y escenarios de prueba automatizados es la manipulación coherente y repetible de la interfaz de usuario. Por ejemplo, esto puede implicar controles específicos de prueba unitaria y grabar y ejecutar scripts de prueba que recorren en iteración una serie de acciones genéricas en un grupo de controles.

Una complicacion en 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 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 dinámicamente fuera del control de la aplicación de prueba, un intento de repetir la selección de un elemento específico en el cuadro de lista con cualquier coherencia es imposible. Pueden surgir problemas similares al intentar repetir cambios de foco simples en una interfaz de usuario que está 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 HWNDs. Para obtener más información, consulte Automatización de la interfaz de usuario Información general sobre árboles.
  • Los elementos de automatización son componentes individuales en la interfaz de usuario. A menudo, pueden ser más granulares que un HWND.
  • 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 y localizar posteriormente cualquier control en la interfaz de usuario proporciona la base para que las aplicaciones de prueba automatizadas funcionen en esa interfaz de usuario. Automatización de la interfaz de usuario propiedades usadas por clientes y proveedores para identificar y localizar controles se describen en la tabla siguiente.

Propiedad Descripción
AutomationId Distingue de forma única un elemento de automatización de sus elementos del mismo nivel. No se requiere compatibilidad con la propiedad AutomationId. Cuando está disponible, la propiedad AutomationId de un elemento es la misma en cualquier instancia de la aplicación, independientemente del idioma local. Aunque la propiedad AutomationId es única entre los elementos del mismo nivel, puede que no sea único en todo el escritorio. Por ejemplo, varias instancias de una aplicación o varias vistas de carpeta en el Explorador de Microsoft Windows pueden contener elementos con la misma AutomationIdProperty, como "SystemMenuBar". Los clientes no deben realizar ninguna suposición con respecto a automationIds expuestos por otras aplicaciones. AutomationId no se garantiza que sea estable en distintas versiones o compilaciones de una aplicación.
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. Para obtener más información, consulta UI Automation Control Types Overview.
Nombre Cadena de texto que identifica o explica el propósito de un elemento de automatización. Debe usarse con precaución porque se puede localizar. La propiedad Name no es un identificador único entre los elementos del mismo nivel. Para la automatización de pruebas, los clientes deben usar la propiedad AutomationId o la propiedad RuntimeId en su lugar.
RuntimeId Matriz de enteros que representan un identificador para un elemento de automatización. El identificador es único en el escritorio, pero se garantiza que solo es único para la interfaz de usuario del escritorio en el que se generó. Los identificadores se pueden reutilizar con el tiempo. Use IUIAutomation::CompareElements para determinar si el elemento que actualmente tiene un identificador de tiempo de ejecución determinado es el mismo elemento que tenía ese identificador anteriormente. Además, el formato de la propiedad RuntimeId puede cambiar. Debe tratarse como un valor opaco y utilizarse solo para la comparación; por ejemplo, para determinar si un elemento de automatización está en la memoria caché.

 

Inspect (Inspect.exe) es una herramienta basada en Windows que puede usar para recopilar Automatización de la interfaz de usuario información para el desarrollo y la depuración de proveedores y clientes. Inspect se incluye en el Kit de desarrollo de software (SDK) de Windows.

Consideraciones de seguridad de Automatización de la interfaz de usuario