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 un 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 de RPA también lo utilizan para automatizar aplicaciones en procesos comerciales .
Los proveedores de propiedades de UIA son compatibles con los programas Win32 y .NET .
La última especificación de UIA se encuentra como parte de la Especificación de promesa de comunidad de automatización de interfaz de usuario de Microsoft . Microsoft afirma que la portabilidad a plataformas distintas de Microsoft Windows fue uno de sus objetivos de diseño. Desde entonces ha sido portado a Mono . [3]
Historia
En 2005, Microsoft lanzó UIA como sucesor del marco MSAA .
La API Managed UI Automation 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 descarga separada para Windows XP, Windows Vista y Windows Server 2003 y 2008. [4]
Motivación y metas
Como sucesora de MSAA, la UIA tiene como objetivo abordar los siguientes objetivos:
- Habilite el rendimiento eficiente del cliente sin obligar a los clientes a conectarse con el proceso de una aplicación de destino.
- Exponga más información sobre la interfaz de usuario.
- Coexista y use MSAA, pero no herede los problemas que existen en MSAA.
- Proporcione una alternativa a MSAA que sea fácil de implementar.
Resumen técnico
En el lado del cliente, UIA proporciona una interfaz .NET en UIAutomationClient.dll
ensamblado y una interfaz COM implementada directamente en UIAutomationCore.dll
.
En el lado del servidor, UIAutomationCore.dll
se inyecta en todos los procesos seleccionados en el escritorio actual para realizar la recuperación de datos en nombre de un cliente. La DLL también puede cargar complementos de UIA (llamados proveedores ) en su proceso de host para extraer datos utilizando diferentes técnicas.
UIA tiene cuatro componentes principales de proveedor y cliente, como se muestra en la siguiente tabla.
Componente | Descripción |
---|---|
UIAutomationCore (UIAutomationCore.dll y dependientes) | El código subyacente (a veces llamado núcleo UIA) que maneja la comunicación entre proveedores y clientes. UI Automation Core también ofrece interfaces API de cliente y proveedor para aplicaciones y clientes no administrados; Las aplicaciones no administradas (clientes o proveedores) no requieren los ensamblados administrados que se enumeran a continuación. |
API de proveedor administrado (UIAutomationProvider.dll y dependientes) | Un conjunto de definiciones y funciones de interfaz que se implementan mediante aplicaciones administradas del proveedor de UIA. Los proveedores son objetos que proporcionan información sobre los elementos de la interfaz de usuario y responden a la entrada de programación. |
API de cliente administrado (UIAutomationClient.dll y dependientes) | Un conjunto de definiciones de interfaz y funciones para aplicaciones de cliente UIA administradas. |
UIAutomationClientsideProviders.dll | Un conjunto de implementaciones de proveedores de UIA para controles de Win32 heredados y aplicaciones MSAA. Este proveedor del lado del cliente está disponible para las aplicaciones cliente administradas de forma predeterminada. |
Elementos
UIA expone cada pieza 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 elemento 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 básica y funcionalidad como una sola entidad reconocible (por ejemplo, un botón o 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 sin procesar del árbol como vista de control o vista de contenido. Las aplicaciones también pueden crear vistas personalizadas.
Árbol
Dentro del árbol de UIA hay un elemento raíz que representa el escritorio actual y cuyos elementos secundarios representan las ventanas de la aplicación. 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 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 se pueden usar para indicar qué tipo de control representa un elemento en 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 por humanos de la información del tipo de control UIA está disponible como una LocalizedControlType
propiedad, que puede ser personalizable por los desarrolladores de aplicaciones o de control.
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 Invoke
patrón de control se usa para controles que se pueden invocar (como botones) y el Scroll
patrón de control se usa para controles que son ventanas de visualización desplazables (como cuadros de lista, vistas de lista o cuadros combinados). Debido a que cada patrón de control representa una funcionalidad separada, se pueden combinar para describir el conjunto completo de funcionalidades admitidas por un control en particular.
Propiedades
Los proveedores de UIA exponen las propiedades de 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 los controles, incluidos datos tanto estáticos como dinámicos.
Eventos
La notificación de eventos UIA es una característica clave para las tecnologías de asistencia (AT), como lectores de pantalla y lupas de pantalla. Estos clientes de UIA rastrean los eventos que generan los proveedores de UIA que ocurren dentro de la UIA y utilizan la información para notificar a los usuarios finales.
La eficiencia se mejora al permitir que las aplicaciones de los proveedores generen eventos de manera selectiva, dependiendo de si algún cliente está suscrito a esos eventos o no, si ningún cliente está escuchando ningún evento.
TextPattern
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 TextBox
y RichTextBox
sus equivalentes Win32.
La exposición del contenido textual de un control se logra mediante el uso del TextPattern
patrón de control, que representa el contenido de un contenedor de texto como una secuencia de texto. A su vez, TextPattern
requiere el apoyo de la TextPatternRange
clase para exponer los atributos de formato y estilo. TextPatternRange
admite TextPattern
al representar un intervalo de texto contiguo en un contenedor de texto con los extremos Start
y End
. Los tramos de texto múltiples o disjuntos se pueden representar mediante más de un TextPatternRange
objeto. TextPatternRange
admite 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 prueba automatizados. 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 brinda la capacidad de imitar, a través del código, cualquier interacción y experiencia expuesta por las interacciones tradicionales del usuario. UIA permite el acceso programático a través de cinco componentes:
- El árbol de UIA facilita la navegación a través de la estructura lógica de la interfaz de usuario para la accesibilidad y la automatización.
- Los elementos de automatización de la interfaz de usuario son componentes individuales de 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 la interfaz de usuario definen un aspecto particular de la funcionalidad o característica de un control; pueden consistir en información de propiedad, método, evento y estructura.
- 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 estaba 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 con el objetivo de admitir .NET Framework) incluye un subconjunto de WPF ( PresentationFramework
y WindowsBase
) y UI Automation. [6]
El proyecto de accesibilidad mono de Novell es una implementación de las especificaciones de proveedor y cliente de UIA destinadas al marco Mono. Además, el proyecto proporciona un puente al Kit de herramientas de accesibilidad (ATK) para las tecnologías de asistencia (AT) de Linux. Novell también está trabajando en un puente para que los AT basados en UIA interactúen con aplicaciones que implementan ATK. [7]
Tecnología e interoperabilidad relacionadas
- 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 las aplicaciones UIA y MSAA. Para que la información se pueda compartir entre las dos API, se desarrollaron un proxy de MSAA a UIA y un puente de UIA a MSAA. El primero es un componente que consume información de MSAA y la pone a disposición a través de la API del cliente UIA. Este último habilita aplicaciones cliente que utilizan aplicaciones de acceso MSAA que implementan UIA. [8]
- Aplicaciones de Internet enriquecidas accesibles (ARIA) : la UIA
AriaRole
y lasAriaProperties
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 el mapeo 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 en 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. , después de completar un año de su acuerdo de interoperabilidad, anunciaron que extenderían su acuerdo para incluir la accesibilidad. [10] [11] Específicamente, se anunció que Novell desarrollaría un adaptador de código abierto que permitiría que el marco UIA funcionara con proyectos de accesibilidad de Linux existentes , como Linux Accessibility Toolkit (ATK), que se envía con SUSE Linux Enterprise Desktop , Red Hat. Enterprise Linux y Ubuntu Linux . Esto eventualmente haría que la UIA fuera multiplataforma.
Notas
- ^ Darryl K. Taft: Microsoft promueve la tecnología de accesibilidad multiplataforma , EWeek (28 de noviembre de 2005), consultado el 7 de febrero de 2007.
- ^ Microsoft: Nuevo modelo de accesibilidad de Microsoft que se ofrecerá como solución multiplataforma para la industria , consultado 2007-02-06.
- ^ a b 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 2007-02-07.
- ^ Mono: Oliva .
- ↑ Miguel de Icaza y Philippe Cohen: Mono, Mainsoft and Cross-Platform Enterprise Development 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 2007-02-07.
- ^ KB971513: Descarga de la API de automatización de Windows
- ^ Microsoft: Microsoft y Novell celebran el año de interoperabilidad y amplían el acuerdo de colaboración .
- ^ Página de inicio del proyecto de accesibilidad mono .
Referencias
- Tipos de control de automatización de la interfaz de usuario
- Patrones de control de automatización de la interfaz de usuario
- Propiedades del control de automatización de la interfaz de usuario
- Eventos de automatización de la interfaz de usuario
enlaces externos
- Marco de automatización de pruebas UI Automation Verify (UIA Verify)
- Extensiones de PowerShell de automatización de la interfaz de usuario
- TestStack / Blanco