Microsoft UI Automation (UIA) est une interface de programmation d'application (API) qui permet d'accéder, d'identifier et de manipuler les éléments de l'interface utilisateur (UI) d'une autre application.
UIA vise à fournir l'accessibilité de l'interface utilisateur et succède à Microsoft Active Accessibility . Il facilite également l'automatisation des tests d'interface utilisateur graphique et constitue le moteur sur lequel reposent de nombreux outils d'automatisation des tests . Les outils RPA l'utilisent également pour automatiser les applications dans les processus métier .
Les fournisseurs de propriétés de l'UIA prennent en charge les programmes Win32 et .NET .
La dernière spécification de l'UIA se trouve dans la spécification Microsoft UI Automation Community Promise . Microsoft affirme que la portabilité vers des plateformes autres que Microsoft Windows était l'un de ses objectifs de conception. Elle a depuis été portée sur Mono .
Histoire
En 2005, Microsoft a publié UIA comme successeur du framework MSAA .
L'API Managed UI Automation a été publiée dans le cadre de .NET Framework 3.0 . L'API native UI Automation (fournisseur) est incluse dans le SDK Windows Vista et Windows Server 2008 et est également distribuée avec .NET Framework.
UIA est disponible dès la sortie de la boîte dans Windows 7 dans le cadre de Windows Automation API 3.0 et en téléchargement séparé pour Windows XP, Windows Vista et Windows Server 2003 et 2008.
Motivation et objectifs
En tant que successeur de la MSAA, l'UIA vise à atteindre les objectifs suivants :
- Activez les performances efficaces des clients sans les forcer à se connecter au processus d'une application cible.
- Exposez plus d’informations sur l’interface utilisateur.
- Coexistez avec MSAA et utilisez-le, mais n'héritez pas des problèmes qui existent dans MSAA.
- Fournir une alternative à MSAA simple à mettre en œuvre.
Aperçu technique

Côté client, UIA fournit une interface .NET en UIAutomationClient.dllassembleur et une interface COM implémentée directement en UIAutomationCore.dll.
Côté serveur, UIAutomationCore.dllil est injecté dans tous les processus ou dans certains processus sélectionnés sur le bureau actuel pour effectuer la récupération de données pour le compte d'un client. La DLL peut également charger des plugins UIA (appelés fournisseurs ) dans son processus hôte pour extraire des données à l'aide de différentes techniques.
L'UIA comporte quatre principaux composants fournisseurs et clients, comme indiqué dans le tableau suivant.
Éléments
L'UIA expose chaque élément de l'interface utilisateur aux applications clientes en tant qu'élément d'automatisation. Les éléments sont contenus dans une structure arborescente, avec le bureau comme élément racine.
Les objets d'élément d'automatisation exposent les propriétés communes des éléments d'interface utilisateur qu'ils représentent. L'une de ces propriétés est le type de contrôle, qui définit son apparence et ses fonctionnalités de base en tant qu'entité unique et reconnaissable (par exemple, un bouton ou une case à cocher).
En outre, les éléments exposent des modèles de contrôle qui fournissent des propriétés spécifiques à leurs types de contrôle. Les modèles de contrôle exposent également des méthodes qui permettent aux clients d'obtenir des informations supplémentaires sur l'élément et de fournir des informations.
Les clients peuvent filtrer la vue brute de l'arborescence en tant que vue de contrôle ou vue de contenu. Les applications peuvent également créer des vues personnalisées.
Arbre
Dans l'arborescence UIA, il existe un élément racine qui représente le bureau actuel et dont les éléments enfants représentent les fenêtres d'application. Chacun de ces éléments enfants peut contenir des éléments représentant des éléments d'interface utilisateur tels que des menus, des boutons, des barres d'outils et des zones de liste. Ces éléments peuvent à leur tour contenir d'autres éléments, tels que des éléments de liste.
L'arbre UIA n'est pas une structure fixe et est rarement vu dans sa totalité car il peut contenir des milliers d'éléments. Les parties de l'arbre sont construites au fur et à mesure des besoins et l'arbre peut subir des modifications à mesure que des éléments sont ajoutés, déplacés ou supprimés.
Types de contrôle
Les types de contrôle UIA sont des identifiants bien connus qui peuvent être utilisés pour indiquer quel type de contrôle représente un élément particulier, comme une zone de liste déroulante ou un bouton.
Le fait de disposer d'un identifiant bien connu permet aux dispositifs d'assistance technique (AT) de déterminer plus facilement les types de contrôles disponibles dans l'interface utilisateur (UI) et la manière d'interagir avec ces contrôles. Une représentation lisible par l'homme des informations sur le type de contrôle UIA est disponible sous forme de LocalizedControlTypepropriété, qui peut être personnalisable par les développeurs de contrôles ou d'applications.
Modèles de contrôle
Les modèles de contrôle fournissent un moyen de catégoriser et d'exposer les fonctionnalités d'un contrôle indépendamment du type de contrôle ou de l'apparence du contrôle.
L'UIA utilise des modèles de contrôle pour représenter les comportements de contrôle courants. Par exemple, le Invokemodèle de contrôle est utilisé pour les contrôles qui peuvent être appelés (tels que les boutons) et le Scrollmodèle de contrôle est utilisé pour les contrôles qui sont des fenêtres d'affichage déroulantes (telles que les zones de liste, les vues de liste ou les zones de liste déroulante). Étant donné que chaque modèle de contrôle représente une fonctionnalité distincte, ils peuvent être combinés pour décrire l'ensemble complet des fonctionnalités prises en charge par un contrôle particulier.
Propriétés
Les fournisseurs UIA exposent les propriétés des éléments UIA et des modèles de contrôle. Ces propriétés permettent aux applications clientes UIA de découvrir des informations sur des éléments de l'interface utilisateur (UI), en particulier les contrôles, y compris les données statiques et dynamiques.
Événements
La notification d'événements UIA est une fonctionnalité clé des technologies d'assistance (TA) telles que les lecteurs d'écran et les agrandisseurs d'écran. Ces clients UIA suivent les événements signalés par les fournisseurs UIA qui se produisent au sein de l'UIA et utilisent ces informations pour avertir les utilisateurs finaux.
L'efficacité est améliorée en permettant aux applications du fournisseur de déclencher des événements de manière sélective, selon que des clients sont abonnés à ces événements, ou pas du tout, si aucun client n'écoute d'événements.
Modèle de texte
UIA expose le contenu textuel, y compris les attributs de format et de style, des contrôles de texte dans les plates-formes prises en charge par UIA. Ces contrôles incluent, sans toutefois s'y limiter, Microsoft .NET Framework TextBoxainsi RichTextBoxque leurs équivalents Win32.
L'exposition du contenu textuel d'un contrôle est réalisée grâce à l'utilisation du TextPatternmodèle de contrôle, qui représente le contenu d'un conteneur de texte sous forme de flux de texte. À son tour, TextPatternnécessite la prise en charge de la TextPatternRangeclasse pour exposer les attributs de format et de style. TextPatternRangeprend en charge TextPatternla représentation d'une étendue de texte contiguë dans un conteneur de texte avec les points de terminaison Startet End. Des étendues de texte multiples ou disjointes peuvent être représentées par plusieurs TextPatternRangeobjets. TextPatternRangeprend en charge des fonctionnalités telles que le clonage, la sélection, la comparaison, la récupération et le parcours.
Automatisation de l'interface utilisateur pour les tests automatisés
L'UIA peut également être utile comme cadre pour l'accès programmatique dans les scénarios de tests automatisés. En plus de fournir des solutions plus raffinées en matière d'accessibilité, il est également spécifiquement conçu pour fournir des fonctionnalités robustes pour les tests automatisés.
L'accès programmatique permet d'imiter, par le biais de code, toute interaction et expérience exposées par les interactions utilisateur traditionnelles. L'UIA permet l'accès programmatique via cinq composants :
- L'arborescence UIA facilite la navigation dans la structure logique de l'interface utilisateur pour l'accessibilité et l'automatisation.
- Les éléments d’automatisation de l’interface utilisateur sont des composants individuels de l’interface utilisateur.
- Les propriétés d'automatisation de l'interface utilisateur fournissent des informations spécifiques sur les éléments de l'interface utilisateur ou le modèle de contrôle.
- Les modèles de contrôle d'automatisation de l'interface utilisateur définissent un aspect particulier de la fonctionnalité ou de la fonction d'un contrôle ; ils peuvent être constitués d'informations sur les propriétés, les méthodes, les événements et les structures.
- Les événements d'automatisation de l'interface utilisateur fournissent un déclencheur pour répondre aux modifications et aux notifications dans les informations de l'UIA.
Disponibilité
UIA était initialement disponible sur Windows Vista et Windows Server 2008, et a également été mis à disposition sur Windows XP et Windows Server 2003 dans le cadre de .NET Framework 3.0. Il a été intégré à toutes les versions ultérieures de Windows, jusqu'à Windows 7 inclus .
Outre les plates-formes Windows, le projet Olive (qui est un ensemble de bibliothèques complémentaires pour le noyau Mono visant à prendre en charge .NET Framework) comprend un sous-ensemble de WPF ( PresentationFrameworket WindowsBase) et UI Automation.
Le projet Mono Accessibility de Novell est une implémentation des spécifications UIA Provider et Client destinées au framework Mono. De plus, le projet fournit un pont vers la boîte à outils d'accessibilité (ATK) pour les technologies d'assistance Linux (AT). Novell travaille également sur un pont pour que les AT basées sur UIA puissent interagir avec les applications qui implémentent ATK.
Technologies connexes et interopérabilité
- Microsoft Active Accessibility (MSAA) : UIA est le successeur de MSAA. Cependant, comme il existe encore des applications basées sur MSAA, des ponts sont utilisés pour permettre la communication entre les applications UIA et MSAA. Pour que les informations puissent être partagées entre les deux API, un proxy MSAA vers UIA et un pont UIA vers MSAA ont été développés. Le premier est un composant qui consomme les informations MSAA et les rend disponibles via l'API client UIA. Le second permet aux applications clientes utilisant MSAA d'accéder aux applications qui implémentent UIA.
- Accessible Rich Internet Applications
(ARIA) : L'UIA
AriaRoleetAriaPropertiesles propriétés peuvent donner accès aux valeurs d'attribut ARIA correspondant à un élément HTML (qui peut être exposé comme un élément d'automatisation par les navigateurs Web). Un mappage général des attributs ARIA vers l'UIA est également disponible. - API d'automatisation Windows : à partir de Windows 7, Microsoft regroupe ses technologies d'accessibilité dans un framework appelé API d'automatisation Windows. MSAA et UIA feront partie de ce framework. Pour les versions plus anciennes de Windows, voir KB971513.
- Projet d'accessibilité Mono : Le 7 novembre 2007, Microsoft et Novell Inc. , après avoir conclu un accord d'interopérabilité d'un an, ont annoncé qu'ils étendraient leur accord pour inclure l'accessibilité. Plus précisément, il a été annoncé que Novell développerait un adaptateur open source permettant au framework UIA de fonctionner avec les projets d'accessibilité Linux existants tels que Linux Accessibility Toolkit (ATK), fourni avec SUSE Linux Enterprise Desktop , Red Hat Enterprise Linux et Ubuntu Linux . Cela rendrait finalement UIA multiplateforme.