Automatisation de l'interface utilisateur Microsoft - Microsoft UI Automation

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 d'interface utilisateur (UI) d'une autre application.

UIA vise à fournir l' accessibilité de l'interface utilisateur et est le successeur de Microsoft Active Accessibility . Il facilite également l' automatisation des tests GUI , et c'est le moteur sur lequel de nombreux outils d' automatisation de test sont basés. Les outils RPA l' utilisent également pour automatiser les applications dans les processus métier .

Les fournisseurs de propriétés d'UIA prennent en charge les programmes Win32 et .NET .

La dernière spécification d'UIA se trouve dans le cadre de la spécification de promesse de la communauté Microsoft UI Automation . Microsoft affirme que la portabilité vers des plates-formes autres que Microsoft Windows était l'un de ses objectifs de conception. Il a depuis été porté en Mono .

L'histoire

En 2005, Microsoft a publié UIA en tant que 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 le .NET Framework.

UIA est disponible directement dans Windows 7 dans le cadre de Windows Automation API 3.0 et sous forme de téléchargement séparé pour Windows XP, Windows Vista et Windows Server 2003 et 2008.

Motivation et objectifs

En tant que successeur de MSAA, l'UIA vise à atteindre les objectifs suivants:

  • Activez des performances client efficaces sans forcer les clients à se connecter au processus d'une application cible.
  • Exposez plus d'informations sur l'interface utilisateur.
  • Coexistent avec et utilisent MSAA, mais n'héritent pas des problèmes qui existent dans MSAA.
  • Fournir une alternative à MSAA simple à mettre en œuvre.

Aperçu technique

Cadre

Côté client, UIA fournit une interface .NET en UIAutomationClient.dll assembly et une interface COM implémentée directement dans UIAutomationCore.dll .

Côté serveur, UIAutomationCore.dll est injecté dans tous les processus ou dans une sélection de processus 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.

UIA a quatre principaux composants fournisseur et client, comme indiqué dans le tableau suivant.

Composant La description
UIAutomationCore (UIAutomationCore.dll et dépendants) Le code sous-jacent (parfois appelé noyau UIA) qui gère la communication entre les fournisseurs et les clients. UI Automation Core propose également les interfaces API fournisseur et client pour les applications et clients non gérés; les applications non gérées (clients ou fournisseurs) ne nécessitent pas les assemblys gérés répertoriés ci-dessous.
API du fournisseur géré (UIAutomationProvider.dll et dépendants)

Ensemble de définitions d' interface et de fonctions implémentées par les applications de fournisseur UIA gérées. Les fournisseurs sont des objets qui fournissent des informations sur les éléments de l'interface utilisateur et répondent aux entrées programmatiques.

API client gérée (UIAutomationClient.dll et dépendants) Un ensemble de définitions d'interface et de fonctions pour les applications client UIA gérées.
UIAutomationClientsideProviders.dll Un ensemble d'implémentations de fournisseur UIA pour les contrôles Win32 hérités et les applications MSAA. Ce fournisseur côté client est disponible par défaut pour les applications clientes gérées.

Éléments

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 arborescence, avec le bureau comme élément racine.

Les objets Automation Element 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 comme une seule entité 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 une entrée.

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 y a 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 de l'interface utilisateur tels que des menus, des boutons, des barres d'outils et des zones de liste. Ces éléments, à leur tour, peuvent 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. Certaines parties de l'arborescence sont construites au fur et à mesure qu'elles sont nécessaires et l'arborescence peut subir des modifications au fur et à 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 identificateurs bien connus qui peuvent être utilisés pour indiquer quel type de contrôle un élément particulier représente, comme une zone de liste déroulante ou un bouton.

Le fait d'avoir un identifiant bien connu permet aux appareils de technologie d'assistance (TA) de déterminer plus facilement les types de commandes disponibles dans l'interface utilisateur (UI) et comment interagir avec les commandes. Une représentation lisible par l'homme des informations de type de contrôle UIA est disponible en tant que LocalizedControlType proprié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.

UIA utilise des modèles de contrôle pour représenter les comportements de contrôle courants. Par exemple, le Invoke modèle de contrôle est utilisé pour les contrôles qui peuvent être appelés (tels que les boutons) et le Scroll modèle de contrôle est utilisé pour les contrôles qui sont des fenêtres à défilement (comme 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 sur les éléments UIA et les 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énement UIA est une fonctionnalité clé pour les technologies d'assistance (AT) telles que les lecteurs d'écran et les loupes d'écran. Ces clients UIA suivent les événements déclenchés par les fournisseurs UIA qui se produisent dans l'UIA et utilisent les informations pour notifier 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 les événements.

TextPattern

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, mais ne sont pas limités à, Microsoft .NET Framework TextBox et RichTextBox ainsi que leurs équivalents Win32.

L'exposition du contenu textuel d'un contrôle est effectuée via l'utilisation du TextPattern modèle de contrôle, qui représente le contenu d'un conteneur de texte sous forme de flux de texte. À son tour, TextPattern nécessite la prise en charge de la TextPatternRange classe pour exposer les attributs de format et de style. TextPatternRange prend TextPattern en charge en représentant une étendue de texte contiguë dans un conteneur de texte avec les points de terminaison Start et End . Des étendues de texte multiples ou disjointes peuvent être représentées par plusieurs TextPatternRange objets. TextPatternRange prend en charge des fonctionnalités telles que le clonage, la sélection, la comparaison, la récupération et la traversée.

Automatisation de l'interface utilisateur pour les tests automatisés

UIA peut également être utile en tant que cadre pour l'accès programmatique dans des scénarios de test automatisés. En plus de fournir des solutions d'accessibilité plus raffinées, il est également spécialement conçu pour fournir des fonctionnalités robustes pour les tests automatisés.

L'accès par programme offre la possibilité d'imiter, par le biais du code, toute interaction et expérience exposées par les interactions utilisateur traditionnelles. UIA permet un accès par programme 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 fonctionnalité d'un contrôle; ils peuvent comprendre des informations sur la propriété, la méthode, l'événement et la structure.
  • Les événements d'automatisation de l'interface utilisateur fournissent un déclencheur pour répondre aux modifications et aux notifications dans les informations UIA.

Disponibilité

UIA était initialement disponible sur Windows Vista et Windows Server 2008, et il a également été rendu disponible pour 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'à et y compris Windows 7 .

Outre les plates-formes Windows, le projet Olive (qui est un ensemble de bibliothèques complémentaires pour le noyau Mono visant la prise en charge de .NET Framework) comprend un sous-ensemble de WPF ( PresentationFramework et WindowsBase ) et d'automatisation de l'interface utilisateur.

Le projet Mono Accessibility de Novell est une implémentation des spécifications du fournisseur UIA et du client ciblées pour le framework Mono. En outre, 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 permettant aux AT basés sur UIA d'interagir avec les applications qui implémentent ATK.

Technologie et interopérabilité associées

  • 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. Ainsi, les informations peuvent ê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 des informations MSAA et les rend disponibles via l'API client UIA. Ce dernier permet aux applications clientes utilisant des applications d'accès MSAA qui implémentent UIA.
  • Applications Internet riches accessibles (ARIA) : l'UIA AriaRole et les AriaProperties propriétés peuvent fournir un accès aux valeurs d'attribut ARIA correspondant à un élément HTML (qui peut être exposé en tant qu'élément d'automatisation par les navigateurs Web). Le mappage général des attributs ARIA vers UIA est également disponible.
  • API Windows Automation : à partir de Windows 7, Microsoft intègre ses technologies d'accessibilité dans un cadre appelé API Windows Automation. MSAA et UIA feront partie de ce cadre. Pour les anciennes versions de Windows, consultez l'article KB971513.
  • Projet d'accessibilité mono : Le 7 novembre 2007, Microsoft et Novell Inc. , après avoir conclu un an de leur accord d'interopérabilité, ont annoncé qu'ils prolongeraient 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 des projets d'accessibilité Linux existants tels que Linux Accessibility Toolkit (ATK), qui est livré avec SUSE Linux Enterprise Desktop , Red Hat Enterprise Linux et Ubuntu Linux . Cela rendrait éventuellement UIA multiplateforme.

Remarques

Références

Liens externes