Utilisation d'UI Automation pour des tests automatisés

Notes

Cette documentation s’adresse aux développeurs .NET Framework qui souhaitent utiliser les classes UI Automation managées définies dans l’espace de noms System.Windows.Automation. Pour obtenir les dernières informations sur UI Automation, consultez API Windows Automation : UI Automation.

Cette présentation explique comment Microsoft UI Automation peut être utile en tant qu’infrastructure pour l’accès par programmation aux scénarios de tests automatisés.

UI Automation fournit un modèle objet unifié qui permet à toutes les infrastructures d’interface utilisateur d’exposer des fonctionnalités complexes et riches de manière accessible et facilement automatisée.

UI Automation a été développé comme successeur de Microsoft Active Accessibility. Active Accessibility est une infrastructure existante conçue pour fournir une solution permettant de rendre les contrôles et les applications accessibles. Active Accessibility n’a pas été conçu avec l’automation des tests à l’esprit, même s’il a évolué vers ce rôle en raison d’exigences très similaires en matière d’accessibilité et d’automation. UI Automation, en plus de fournir des solutions plus raffinées pour l’accessibilité, est également conçu pour fournir des fonctionnalités robustes pour les tests automatisés. Par exemple, Active Accessibility s’appuie sur une seule interface pour exposer des informations sur l’interface utilisateur, et collecter les informations nécessaires aux produits AT. UI Automation sépare les deux modèles.

Un fournisseur et un client sont nécessaires pour implémenter UI Automation, et l’utiliser comme outil de test automatisé. Les fournisseurs UI Automation sont des applications telles que Microsoft Word, Excel et d’autres applications ou contrôles tiers basés sur le système d’exploitation Microsoft Windows. Les clients UI Automation incluent des scripts de tests automatisés et des applications de technologie d’assistance.

Notes

L’objectif de cette vue d’ensemble est de présenter les nouvelles fonctionnalités de tests automatisés d’UI Automation, et celles qui ont été améliorées. Cette vue d’ensemble n’est pas destinée à fournir des informations sur les fonctionnalités d’accessibilité, ni à traiter de l’accessibilité en dehors du cadre nécessaire.

UI Automation dans un fournisseur

Pour qu’une interface utilisateur soit automatisée, le développeur d’une application ou d’un contrôle doit déterminer quelles sont les actions standard qu’un utilisateur final peut effectuer sur l’objet d’interface utilisateur à l’aide du clavier et de la souris.

Une fois ces actions clés identifiées, les modèles de contrôle UI Automation correspondants (autrement dit, les modèles de contrôle qui reflètent les fonctionnalités et le comportement de l’élément d’interface utilisateur) doivent être implémentés dans le contrôle. Par exemple, l’interaction d’un utilisateur avec un contrôle zone de liste modifiable (par exemple la boîte de dialogue Exécuter) implique généralement le développement et la réduction de la zone de liste modifiable pour masquer ou afficher une liste d’éléments, la sélection d’un élément dans cette liste, ou l’ajout d’une nouvelle valeur via l’entrée au clavier.

Notes

Avec d’autres modèles d’accessibilité, les développeurs doivent rassembler les informations directement à partir des boutons, menus ou autres contrôles individuels. Malheureusement, chaque type de contrôle implique des dizaines de variations mineures. En d’autres termes, même si dix variations d’un bouton de commande fonctionnent de la même manière et exécutent la même fonction, elles doivent toutes être traitées comme des contrôles uniques. Il n’existe aucun moyen de savoir si ces contrôles sont équivalents d’un point de vue fonctionnel. Les modèles de contrôle ont été développés pour représenter ces comportements de contrôles communs. Pour plus d'informations, consultez UI Automation Control Patterns Overview.

Implémentation d’UI Automation

Comme mentionné précédemment, sans le modèle unifié fourni par UI Automation, les outils de test et les développeurs doivent connaître les informations spécifiques à l’infrastructure pour exposer les propriétés et les comportements des contrôles dans cette infrastructure. Dans la mesure où il peut exister plusieurs infrastructures d’interface utilisateur différentes à tout moment dans les systèmes d’exploitation Windows, notamment Win32, Windows Forms et Windows Presentation Foundation (WPF), il est parfois très difficile de tester plusieurs applications avec des contrôles apparemment similaires. Par exemple, le tableau suivant présente les noms de propriétés spécifiques à l’infrastructure, et qui sont nécessaires pour récupérer le nom (ou le texte) associé à un contrôle bouton. En outre, il indique la seule propriété UI Automation équivalente.

Type de contrôle UI Automation Infrastructure d’interface utilisateur Propriété spécifique à l’infrastructure Propriété UI Automation
Bouton Windows Presentation Foundation Contenu NameProperty
Bouton Win32 Caption NameProperty
Image HTML alt NameProperty

Les fournisseurs UI Automation sont chargés de mapper les propriétés spécifiques à l’infrastructure de leurs contrôles aux propriétés UI Automation équivalentes.

Pour plus d’informations sur l’implémentation d’UI Automation dans un fournisseur, consultez Fournisseurs UI Automation pour le code managé. Les informations relatives à l’implémentation des modèles de contrôle sont disponibles sur UI Automation Control Patterns et UI Automation Text Pattern.

UI Automation dans un client

L’objectif de nombreux scénarios et outils de test automatisé est de permettre la manipulation cohérente et répétitive de l’interface utilisateur. Cela peut aller du test unitaire de contrôles spécifiques à l’enregistrement et la lecture de scripts de test qui itèrent au sein d’une série d’actions génériques dans un groupe de contrôles.

L’une des complications issues des applications automatisées est la difficulté à synchroniser un test avec une cible dynamique. C’est le cas, par exemple, pour un contrôle de zone de liste contenu dans le Gestionnaire des tâches Windows, qui affiche une liste des applications en cours d’exécution. Étant donné que les éléments de la zone de liste sont mis à jour dynamiquement en dehors du contrôle de l’application de test, il est impossible de répéter la sélection d’un élément spécifique dans la zone de liste avec cohérence. Des problèmes similaires peuvent également survenir quand vous tentez de répéter des changements de focus simples dans une interface située hors du contrôle de l’application de test.

Accès par programme

L’accès par programmation permet d’imiter, avec du code, les interactions et les expériences produites par les entrées classiques au clavier et à la souris. UI Automation permet l’accès par programmation via cinq composants :

  • L’arborescence UI Automation facilite la navigation dans la structure de l’interface utilisateur. L’arborescence est créée à partir de la collection de hWnd. Pour plus d'informations, consultez UI Automation Tree Overview

  • Les éléments Automation sont des composants individuels dans l’interface. Ceux-ci peuvent être souvent plus précis qu’un hWnd. Pour plus d'informations, consultez UI Automation Control Types Overview.

  • Les propriétés Automation fournissent des informations spécifiques sur les éléments d’interface utilisateur . Pour plus d'informations, consultez UI Automation Properties Overview.

  • Les modèles de contrôle définissent un aspect particulier des fonctionnalités d’un contrôle. Il peut s’agir d’informations sur les propriétés, les méthodes, les événements et les structures. Pour plus d'informations, consultez UI Automation Control Patterns Overview.

  • Les événements Automation fournissent des informations et des notifications d’événements. Pour plus d'informations, consultez UI Automation Events Overview.

Propriétés principales pour l’automatisation des tests

La capacité à identifier de manière unique, puis à localiser un contrôle dans l’interface, est à la base du fonctionnement des applications de tests automatisés dans cette interface. Il existe plusieurs propriétés Microsoft UI Automation utilisées par les clients et les fournisseurs pour faciliter cette opération.

AutomationID

Identifie de manière unique un élément Automation parmi ses frères. AutomationIdProperty n’est pas localisé, contrairement à une propriété comme NameProperty , qui est généralement localisé si un produit est disponible dans plusieurs langues. Consultez Use the AutomationID Property.

Notes

AutomationIdProperty ne garantit pas une identité unique dans l’arborescence Automation. Par exemple, une application peut contenir un contrôle de menu avec plusieurs éléments de menu de niveau supérieur qui, à leur tour, contiennent plusieurs éléments enfants. Ces éléments de menu secondaires peuvent être identifiés par un schéma générique tel que « Item1, Item 2, Item3, etc. », qui autorise les identificateurs dupliqués pour les enfants dans l’ensemble des éléments de menu de niveau supérieur.

ControlType

Identifie le type de contrôle représenté par un élément Automation. Des informations importantes peuvent être déduites à partir de la connaissance du type de contrôle. Consultez UI Automation Control Types Overview.

NameProperty

Il s’agit d’une chaîne de texte qui identifie ou explique un contrôle. NameProperty doit être utilisé avec précaution, car il peut être localisé. Consultez UI Automation Properties Overview.

Implémentation d’UI Automation dans une application de test

Étape Description
Ajouter les références UI Automation Les DLL UI Automation nécessaires aux clients UI Automation sont répertoriées ici.

- UIAutomationClient.dll fournit l’accès aux API côté client UI Automation.
- UIAutomationClientSideProvider.dll permet d’automatiser les contrôles Win32. Consultez UI Automation Support for Standard Controls.
- UIAutomationTypes.dll fournit l’accès aux types spécifiques définis dans UI Automation.
Ajouter l’espace de noms System.Windows.Automation Cet espace de noms contient tout ce dont les clients UI Automation ont besoin pour tirer parti des fonctionnalités UI Automation, à l’exception de la gestion du texte.
Ajouter l’espace de noms System.Windows.Automation.Text Cet espace de noms contient tout ce dont les clients UI Automation ont besoin pour tirer parti des fonctionnalités de gestion de texte.
Rechercher les contrôles intéressants. Les scripts de tests automatisés localisent les éléments UI Automation qui représentent des contrôles intéressants dans l’arborescence Automation.

Il existe plusieurs façons d’obtenir des éléments UI Automation avec du code.

- Interrogez l’interface utilisateur à l’aide d’une instruction Condition. Il s’agit généralement du cas où le AutomationIdProperty indépendant de la langue est utilisé. Remarque : Vous pouvez obtenir un AutomationIdProperty à l’aide d’un outil tel que Inspect.exe, qui peut détailler les propriétés UI Automation d’un contrôle.

- Utilisez la classe TreeWalker pour parcourir l’ensemble de l’arborescence UI Automation, ou un de ses sous-ensembles.
- Suivez le focus.
- Utilisez le hWnd du contrôle.
- Utilisez l’emplacement à l’écran, par exemple l’emplacement du curseur de la souris.

Voir Obtaining UI Automation Elements
Obtenir des modèles de contrôle. Les modèles de contrôle exposent les comportements usuels des contrôles similaires d’un point de vue fonctionnel.

Après avoir localisé les contrôles nécessitant un test, les scripts de tests automatisés obtiennent les modèles de contrôle intéressants via ces éléments UI Automation. C’est le cas, par exemple, du modèle de contrôle InvokePattern pour les fonctionnalités de bouton classiques, ou du modèle de contrôle WindowPattern pour les fonctionnalités relatives aux fenêtres.

Consultez UI Automation Control Patterns Overview.
Automatiser l’interface utilisateur. Les scripts de tests automatisés peuvent désormais contrôler toute interface utilisateur intéressante d’une infrastructure d’interface utilisateur, à l’aide des informations et fonctionnalités exposées par les modèles de contrôle UI Automation.

Plusieurs outils et technologies associés prennent en charge les tests automatisés avec UI Automation.

  • Inspect.exe est une application d’interface utilisateur graphique (GUI) qui peut être utilisée pour collecter des informations UI Automation pour le développement et le débogage du fournisseur et du client. Inspect.exe est inclus dans le Kit de développement logiciel (SDK) Windows.

  • MSAABridge expose les informations d’UI Automation aux clients Active Accessibility. L’objectif principal du pontage entre UI Automation et Active Accessibility est de permettre aux clients d’Active Accessibility d’interagir avec n’importe quel framework qui a implémenté UI Automation.

Sécurité

Pour plus d’informations sur la sécurité, consultez UI Automation Security Overview.

Voir aussi