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

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.

Los productos de tecnología de asistencia y los scripts de prueba navegan por el árbol de UI Automation para reunir información sobre UI Automation y sus elementos.

Dentro del árbol de UI Automation existe un elemento raíz (RootElement) que representa el escritorio actual y cuyos elementos secundarios representan ventanas de la aplicación. Cada uno de estos elementos secundarios puede contener elementos que representan partes de UI, como menús, botones, barras de herramientas y cuadros de lista. A su vez, estos elementos pueden contener elementos, como elementos de lista.

El árbol de UI Automation no es una estructura fija y casi nunca se presenta en su totalidad, ya que podría contener miles de elementos. Partes de él se crean conforme se necesitan y pueden experimentar cambios a medida que se agregan, mueven o quitan elementos.

Los proveedores de Automatización de la interfaz de usuario admiten el árbol de UI Automation mediante la implementación de navegación entre los elementos dentro de un fragmento, que consta de una raíz (normalmente hospedada en una ventana) y un subárbol. Sin embargo, a los proveedores no les afecta la navegación de un control a otro. Esto lo administra el núcleo de UI Automation, utilizando la información de los proveedores de ventana predeterminados.

Vistas del árbol de automatización

Es posible filtrar el árbol de UI Automation para crear vistas que solo contengan aquellos objetos AutomationElement que sean relevantes para un cliente determinado. Este enfoque permite a los clientes personalizar la estructura presentada a través de UI Automation para sus necesidades concretas.

El cliente tiene dos maneras de personalizar la vista: mediante ámbito y mediante filtrado. El ámbito consiste en definir el alcance de la vista, a partir de un elemento base: por ejemplo, la aplicación podría querer buscar únicamente los elementos secundarios directos del escritorio o todos los descendientes de una ventana de aplicación. El filtrado implica definir los tipos de elementos que deben incluirse en la vista.

Los proveedores de UI Automation admiten el filtrado mediante la definición de propiedades en los elementos, incluidas las propiedades IsControlElementProperty y IsContentElementProperty.

UI Automation proporciona tres vistas predeterminadas. Estas vistas se definen mediante el tipo de filtrado realizado; el ámbito de cualquier vista lo define la aplicación. Además, la aplicación puede aplicar otros filtros en las propiedades; por ejemplo, para incluir únicamente controles habilitados en una vista de control.

Vista sin formato

La vista sin formato del árbol de UI Automation es el árbol completo de objetos AutomationElement del que el escritorio es la raíz. La vista sin formato sigue estrechamente la estructura de programación nativa de una aplicación y es, por tanto, la vista más detallada disponible. También es la base sobre la que se crean las otras vistas del árbol. Como esta vista depende del marco de UI subyacente, la vista sin formato de un botón WPF tendrá una vista sin formato diferente de la de un botón Win32.

La vista sin formato se obtiene mediante la búsqueda de elementos sin especificar propiedades o usando el elemento RawViewWalker para navegar por el árbol.

Vista de control

La vista de control del árbol de UI Automation simplifica la tarea del producto de tecnología de asistencia de la descripción de UI al usuario final y le ayuda a interactuar con la aplicación, ya que se asigna estrechamente a la estructura UI que percibe un usuario final.

La vista de control es un subconjunto de la vista sin formato. Incluye todos los elementos UI de la vista sin formato que un usuario final entendería como interactivos o que contribuyen a la estructura lógica del control en la UI. Algunos ejemplos de elementos UI que contribuyen a la estructura lógica de la UI, pero no son interactivos por sí mismos, son los contenedores de elementos como los encabezados de vistas de lista, las barras de herramientas, los menús y la barra de estado. En la vista de control no se verán los elementos no interactivos que se utilizan simplemente para fines decorativos o de diseño. Un ejemplo es un panel utilizado únicamente para organizar los controles en un cuadro de diálogo, pero no contiene ninguna información en sí. Los elementos no interactivos que se verán 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 que se incluyen en la vista de control no pueden recibir el foco del teclado.

La vista de control se obtiene mediante la búsqueda de elementos que tengan la propiedad IsControlElement establecida en true o mediante el elemento ControlViewWalker 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. Contiene elementos de UI que transmiten la información verdadera en una interfaz de usuario, entre la que se incluyen los elementos de UI que pueden recibir el foco del teclado y texto que no es una etiqueta en un elemento UI. Por ejemplo, los valores de un cuadro combinado desplegable aparecerán en la vista de contenido porque 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 UI, donde se pueden seleccionar uno o, quizás, varios elementos. El hecho de que uno siempre esté abierto y otro pueda expandirse y contraerse es irrelevante en la vista de contenido, ya que está diseñada para mostrar los datos, o el contenido, que se muestran al usuario.

La vista de contenido se obtiene mediante la búsqueda de elementos que tengan la propiedad IsContentElement establecida en true o mediante el elemento ContentViewWalker para navegar por el árbol.

Vea también