Información general sobre el árbol de la UI Automation

Los productos de tecnología de asistencia y los scripts de prueba navegan por el árbol de microsoft Automatización de la interfaz de usuario para recopilar información sobre la interfaz de usuario y sus elementos.

En el árbol de Automatización de la interfaz de usuario es un elemento raíz que representa la ventana de escritorio de Windows ("el escritorio") y cuyos elementos secundarios representan ventanas de 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 pueden contener elementos, como elementos de lista.

El árbol de Automatización de la interfaz de usuario no es una estructura fija. Rara vez se ve en su totalidad porque puede contener miles de elementos. Las partes del árbol de Automatización de la interfaz de usuario se crean como un cliente las necesita y la estructura del árbol cambia a medida que se agregan, mueven o quitan elementos.

Automatización de la interfaz de usuario proveedores admiten el árbol de Automatización de la interfaz de usuario implementando la navegación entre los elementos de un fragmento. Un fragmento es un subárbol completo de elementos de un marco determinado y tiene un elemento raíz (denominado raíz del fragmento) que normalmente se hospeda en una ventana.

Los proveedores no están preocupados por la navegación de un control a otro. Esto se administra mediante el núcleo de Automatización de la interfaz de usuario, que usa información de los proveedores de ventanas predeterminados.

En este tema se incluyen las siguientes secciones.

Vistas del árbol de Automatización de la interfaz de usuario

El árbol de Automatización de la interfaz de usuario se puede filtrar para crear vistas que contengan solo los elementos de Automatización de la interfaz de usuario que son relevantes para un cliente determinado. Este enfoque permite a los clientes personalizar la estructura que se presenta a través de Automatización de la interfaz de usuario a sus necesidades particulares.

El cliente puede personalizar la vista mediante el ámbito y mediante el filtrado. El ámbito está definiendo la extensión de la vista, empezando por un elemento base. Por ejemplo, es posible que la aplicación quiera buscar solo elementos secundarios directos del escritorio o todos los descendientes de una ventana de aplicación. El filtrado define los tipos de elementos que se incluyen en la vista.

Automatización de la interfaz de usuario proveedores admiten el filtrado mediante la definición de propiedades en elementos, incluidas las propiedades IUIAutomationElement::IsControlElement e IUIAutomationElement::IsContentElement.

Automatización de la interfaz de usuario proporciona tres vistas predeterminadas: vista sin formato, vista de control y vista de contenido. Estas vistas se definen mediante el tipo de filtrado realizado. La aplicación define el ámbito de cualquier vista. La aplicación puede aplicar otros filtros en propiedades; por ejemplo, para incluir solo los controles habilitados en una vista de control.

Vista sin formato

La vista sin procesar del árbol de Automatización de la interfaz de usuario es el árbol completo de elementos de automatización para los que el escritorio es la raíz. La vista sin procesar sigue estrechamente la estructura de programación nativa de una aplicación y es la vista más detallada disponible. También es la base sobre la que se crean las otras vistas del árbol. Dado que esta vista depende del marco de interfaz de usuario subyacente, la vista sin procesar de un botón de Windows Presentation Foundation (WPF) tiene una vista sin procesar diferente que un botón de Microsoft Win32.

La vista sin procesar se obtiene buscando elementos sin especificar propiedades o usando IUIAutomation::RawViewWalker para obtener una interfaz IUIAutomationTreeWalker para navegar por el árbol.

Vista de control

La vista de control es un subconjunto de la vista sin formato. Solo incluye los elementos de la interfaz de usuario que tienen la propiedad IUIAutomationElement::IsControlElement establecida en TRUE.

La vista de control incluye los elementos de la interfaz de usuario que proporcionan información al usuario o permiten al usuario realizar una acción. Estos son los elementos de interfaz de usuario más interesantes para las aplicaciones de prueba automatizadas.

La vista de control también incluye elementos de interfaz de usuario no interactivos que contribuyen a la estructura lógica de la interfaz de usuario. Estos incluyen contenedores de elementos, como encabezados de vista de lista, barras de herramientas, menús y la barra de estado. Otros elementos no interactivos que aparecen en la vista de control son gráficos con información y texto estático en un cuadro de diálogo.

Los elementos no interactivos utilizados solo para fines decorativos o de diseño, como paneles usados para diseñar controles en un cuadro de diálogo, no aparecen en la vista de control.

La vista de control del árbol de Automatización de la interfaz de usuario se asigna estrechamente a la estructura de la interfaz de usuario que percibe un usuario final. Esto facilita que el producto de tecnología de asistencia describa la interfaz de usuario al usuario final y ayude a que el usuario final interactúe con la aplicación.

La vista de control se obtiene buscando elementos que tengan la propiedad IUIAutomationElement::IsControlElement establecida en true, o mediante ControlViewWalker para obtener una interfaz IUIAutomationTreeWalker para navegar por el árbol.

Vista de contenido

La vista de contenido del árbol de UI Automation es un subconjunto de la vista de control. Solo incluye los elementos de interfaz de usuario que tienen la propiedad IUIAutomationElement::IsControlElement y la propiedad IUIAutomationElement::IsContentElement establecida en TRUE.

La vista de contenido contiene elementos de interfaz de usuario que transmiten la información real en una interfaz de usuario, incluidos los elementos de interfaz de usuario que pueden recibir el foco del teclado y algún texto que no es una etiqueta en un elemento de interfaz de usuario. Estos son los elementos de la interfaz de usuario que son más interesantes para una aplicación de lector de pantalla. Por ejemplo, los valores de un cuadro combinado desplegable aparecen en la vista de contenido porque los valores representan la información que usa un usuario final.

En la vista de contenido, un cuadro combinado y un cuadro de lista se representan como una colección de elementos de interfaz de usuario donde se puede seleccionar uno o varios elementos. El hecho de que un elemento siempre está abierto y un elemento puede expandirse y contraer es irrelevante en la vista de contenido porque está diseñado para mostrar los datos, o el contenido, que se presenta al usuario.

La vista de contenido se obtiene mediante la búsqueda de elementos que tienen la propiedad IsControlElement y CurrentIsContentElement establecida en TRUE, o mediante IUIAutomation::ContentViewWalker para obtener una interfaz IUIAutomationTreeWalker para navegar por el árbol.

Las imágenes siguientes muestran las diferencias entre la vista de control y la vista de contenido. La primera imagen muestra un cuadro combinado simple con tres elementos en la lista desplegable. En la segunda imagen se muestra cómo aparecen los elementos de interfaz de usuario del cuadro combinado en las vistas de control y contenido de la aplicación UISpy.exe.

captura de pantalla de un cuadro combinado simple con tres elementos desplegables

captura de pantalla de la aplicación uispy con vistas de control y contenido de elementos de cuadro combinado

Conceptual

Creación del objeto CUIAutomation

Obtener elementos de UI Automation

Fundamentos de UI Automation