Microsoft UI Automation (UIA) es una interfaz de programación de aplicaciones (API) que permite acceder, identificar y manipular los elementos de la interfaz de usuario (UI) de otra aplicación. [1] [2]
UIA tiene como objetivo proporcionar accesibilidad a la interfaz de usuario y es el sucesor de Microsoft Active Accessibility . También facilita la automatización de pruebas de GUI y es el motor en el que se basan muchas herramientas de automatización de pruebas . Las herramientas RPA también lo utilizan para automatizar aplicaciones en procesos comerciales .
Los proveedores de propiedades de UIA admiten programas Win32 y .NET .
La última especificación de UIA se encuentra como parte de la Microsoft UI Automation Community Promise Specification . Microsoft afirma que la portabilidad a plataformas distintas de Microsoft Windows era uno de sus objetivos de diseño. Desde entonces se ha portado a Mono . [3]
Historia
En 2005, Microsoft lanzó UIA como sucesor del marco MSAA .
La API de automatización de la interfaz de usuario administrada se lanzó como parte de .NET Framework 3.0 . La API de automatización de la interfaz de usuario nativa (proveedor) se incluye como parte del SDK de Windows Vista y Windows Server 2008 y también se distribuye con .NET Framework.
UIA está disponible de fábrica en Windows 7 como parte de Windows Automation API 3.0 y como una descarga independiente para Windows XP, Windows Vista y Windows Server 2003 y 2008. [4]
Motivación y objetivos
Como sucesora de la MSAA, la UIA se propone abordar los siguientes objetivos:
- Permita un rendimiento eficiente del cliente sin forzarlos a conectarse al proceso de una aplicación de destino.
- Exponer más información sobre la interfaz de usuario.
- Coexisten con MSAA y la utilizan, pero no heredan los problemas que existen en MSAA.
- Proporcionar una alternativa a MSAA que sea fácil de implementar.
Descripción técnica

En el lado del cliente, UIA proporciona una interfaz .NET en UIAutomationClient.dllensamblador y una interfaz COM implementada directamente en UIAutomationCore.dll.
En el lado del servidor, UIAutomationCore.dllse inyecta en todos los procesos o en algunos seleccionados del escritorio actual para realizar la recuperación de datos en nombre de un cliente. La DLL también puede cargar complementos UIA (llamados proveedores ) en su proceso host para extraer datos mediante diferentes técnicas.
La UIA tiene cuatro componentes principales: proveedor y cliente, como se muestra en la siguiente tabla.
Elementos
UIA expone cada parte de la interfaz de usuario a las aplicaciones cliente como un elemento de automatización. Los elementos están contenidos en una estructura de árbol, con el escritorio como elemento raíz.
Los objetos de elementos de automatización exponen propiedades comunes de los elementos de la interfaz de usuario que representan. Una de estas propiedades es el tipo de control, que define su apariencia y funcionalidad básicas como una única entidad reconocible (por ejemplo, un botón o una casilla de verificación).
Además, los elementos exponen patrones de control que proporcionan propiedades específicas para sus tipos de control. Los patrones de control también exponen métodos que permiten a los clientes obtener más información sobre el elemento y proporcionar información.
Los clientes pueden filtrar la vista original del árbol como vista de control o vista de contenido. Las aplicaciones también pueden crear vistas personalizadas.
Árbol
Dentro del árbol UIA hay un elemento raíz que representa el escritorio actual y cuyos elementos secundarios representan ventanas de aplicaciones. Cada uno de estos elementos secundarios puede contener elementos que representan partes de la interfaz de usuario, como menús, botones, barras de herramientas y cuadros de lista. Estos elementos, a su vez, pueden contener otros elementos, como elementos de lista.
El árbol UIA no es una estructura fija y rara vez se lo ve en su totalidad porque puede contener miles de elementos. Las partes del árbol se construyen a medida que se necesitan y el árbol puede sufrir cambios a medida que se agregan, mueven o eliminan elementos.
Tipos de control
Los tipos de control UIA son identificadores bien conocidos que pueden usarse para indicar qué tipo de control representa un elemento particular, como un cuadro combinado o un botón.
Tener un identificador conocido permite que los dispositivos de tecnología de asistencia (AT) determinen más fácilmente qué tipos de controles están disponibles en la interfaz de usuario (UI) y cómo interactuar con los controles. Una representación legible para humanos de la información del tipo de control de la UIA está disponible como una LocalizedControlTypepropiedad, que puede ser personalizada por los desarrolladores de aplicaciones o controles.
Patrones de control
Los patrones de control proporcionan una forma de categorizar y exponer la funcionalidad de un control independientemente del tipo de control o la apariencia del control.
UIA utiliza patrones de control para representar comportamientos de control comunes. Por ejemplo, el Invokepatrón de control se utiliza para controles que se pueden invocar (como botones) y el Scrollpatrón de control se utiliza para controles que son ventanas gráficas desplazables (como cuadros de lista, vistas de lista o cuadros combinados). Debido a que cada patrón de control representa una funcionalidad independiente, se pueden combinar para describir el conjunto completo de funcionalidades admitidas por un control en particular.
Propiedades
Los proveedores de UIA exponen propiedades sobre los elementos de UIA y los patrones de control. Estas propiedades permiten que las aplicaciones cliente de UIA descubran información sobre partes de la interfaz de usuario (UI), especialmente controles, incluidos datos estáticos y dinámicos.
Eventos
La notificación de eventos de la UIA es una característica clave para las tecnologías de asistencia (AT), como los lectores de pantalla y los magnificadores de pantalla. Estos clientes de la UIA rastrean los eventos que generan los proveedores de la UIA y que ocurren dentro de la UIA, y utilizan la información para notificar a los usuarios finales.
Se mejora la eficiencia al permitir que las aplicaciones del proveedor generen eventos de forma selectiva, dependiendo de si hay clientes suscritos a esos eventos, o no, si ningún cliente está escuchando ningún evento.
Patrón de texto
UIA expone el contenido textual, incluidos los atributos de formato y estilo, de los controles de texto en plataformas compatibles con UIA. Estos controles incluyen, entre otros, Microsoft .NET Framework TextBoxy RichTextBoxsus equivalentes Win32.
La exposición del contenido textual de un control se logra mediante el uso del TextPatternpatrón de control, que representa el contenido de un contenedor de texto como un flujo de texto. A su vez, TextPatternrequiere el soporte de la TextPatternRangeclase para exponer los atributos de formato y estilo. TextPatternRangeadmite TextPatternla representación de un intervalo de texto contiguo en un contenedor de texto con los puntos finales Starty End. Los intervalos de texto múltiples o disjuntos se pueden representar mediante más de un TextPatternRangeobjeto. TextPatternRangeadmite funciones como clonación, selección, comparación, recuperación y recorrido.
Automatización de la interfaz de usuario para pruebas automatizadas
UIA también puede ser útil como marco para el acceso programático en escenarios de pruebas automatizadas. Además de proporcionar soluciones más refinadas para la accesibilidad, también está diseñado específicamente para proporcionar una funcionalidad sólida para las pruebas automatizadas.
El acceso programático proporciona la capacidad de imitar, a través de código, cualquier interacción y experiencia expuesta por las interacciones tradicionales de los usuarios. UIA permite el acceso programático a través de cinco componentes:
- El árbol UIA facilita la navegación a través de la estructura lógica de la UI para la accesibilidad y la automatización.
- Los elementos de automatización de la interfaz de usuario son componentes individuales en la interfaz de usuario.
- Las propiedades de automatización de la interfaz de usuario proporcionan información específica sobre los elementos de la interfaz de usuario o el patrón de control.
- Los patrones de control de automatización de UI definen un aspecto particular de la funcionalidad o característica de un control; pueden consistir en información de propiedades, métodos, eventos y estructuras.
- Los eventos de automatización de la interfaz de usuario proporcionan un disparador para responder a los cambios y notificaciones en la información de la UIA.
Disponibilidad
UIA estuvo disponible inicialmente en Windows Vista y Windows Server 2008, y también estuvo disponible para Windows XP y Windows Server 2003 como parte de .NET Framework 3.0. Se ha integrado con todas las versiones posteriores de Windows, hasta Windows 7 inclusive . [5]
Además de las plataformas Windows, el proyecto Olive (que es un conjunto de bibliotecas complementarias para el núcleo Mono que apuntan a la compatibilidad con .NET Framework) incluye un subconjunto de WPF ( PresentationFrameworky WindowsBase) y UI Automation. [6]
El proyecto Mono Accessibility de Novell es una implementación de las especificaciones de UIA Provider y Client destinadas al marco Mono. Además, el proyecto proporciona un puente hacia el Accessibility Toolkit (ATK) para tecnologías de asistencia (AT) de Linux. Novell también está trabajando en un puente para que las AT basadas en UIA interactúen con aplicaciones que implementan ATK. [7]
Tecnología relacionada e interoperabilidad
- Microsoft Active Accessibility (MSAA) : UIA es el sucesor de MSAA. Sin embargo, dado que todavía existen aplicaciones basadas en MSAA, se utilizan puentes para permitir la comunicación entre aplicaciones UIA y MSAA. Para que la información se pueda compartir entre las dos API, se desarrollaron un proxy MSAA-UIA y un puente UIA-MSAA. El primero es un componente que consume información MSAA y la pone a disposición a través de la API de cliente UIA. El segundo permite que las aplicaciones cliente que utilizan MSAA accedan a aplicaciones que implementan UIA. [8]
- Aplicaciones de Internet enriquecidas accesibles (ARIA) : la UIA
AriaRoleyAriaPropertieslas propiedades pueden proporcionar acceso a los valores de los atributos ARIA correspondientes a un elemento HTML (que los navegadores web pueden exponer como un elemento de automatización). También está disponible la asignación general de atributos ARIA a UIA. [3] - API de automatización de Windows : a partir de Windows 7, Microsoft está empaquetando sus tecnologías de accesibilidad bajo un marco llamado API de automatización de Windows. Tanto MSAA como UIA serán parte de este marco. Para versiones anteriores de Windows, consulte KB971513. [9]
- Proyecto de Accesibilidad Mono : El 7 de noviembre de 2007, Microsoft y Novell Inc. , tras completar un año de su acuerdo de interoperabilidad, anunciaron que ampliarían su acuerdo para incluir la accesibilidad. [10] [11] En concreto, se anunció que Novell desarrollaría un adaptador de código abierto que permitiera al marco UIA trabajar con proyectos de accesibilidad de Linux existentes , como Linux Accessibility Toolkit (ATK), que se entrega con SUSE Linux Enterprise Desktop , Red Hat Enterprise Linux y Ubuntu Linux . Esto acabaría convirtiendo a UIA en multiplataforma.
Notas
- ^ Darryl K. Taft: Microsoft promueve tecnología de accesibilidad multiplataforma, EWeek (28 de noviembre de 2005), consultado el 7 de febrero de 2007.
- ^ Microsoft: El nuevo modelo de accesibilidad de Microsoft se ofrecerá como una solución multiplataforma para la industria, consultado el 6 de febrero de 2007.
- ^ ab Microsoft Developer Network: Especificación de automatización de la interfaz de usuario y promesa de la comunidad
- ^ Descripción de la API de automatización de Windows
- ^ Microsoft: Descripción general de la automatización de la interfaz de usuario, consultado el 7 de febrero de 2007.
- ^ Mono: Oliva.
- ^ Miguel de Icaza y Philippe Cohen: Mono, Mainsoft y desarrollo empresarial multiplataforma Archivado el 17 de junio de 2008 en Wayback Machine , Enterprise Open Source Magazine (14 de enero de 2007), consultado el 7 de febrero de 2007.
- ^ Microsoft Developer Network (MSDN): Microsoft, UI Automation y Microsoft Active Accessibility, consultado el 7 de febrero de 2007.
- ^ KB971513: Descarga de la API de automatización de Windows
- ^ Microsoft: Microsoft y Novell celebran el Año de la Interoperabilidad y amplían el acuerdo de colaboración.
- ^ Página de inicio del Proyecto de Accesibilidad Mono.
Referencias
- Tipos de controles de automatización de la interfaz de usuario
- Patrones de control de automatización de la interfaz de usuario
- Propiedades de control de automatización de la interfaz de usuario
- Eventos de automatización de la interfaz de usuario
Enlaces externos
- Interfaz de usuario de Fla