Partager via


Utilisation d'UI Automation pour des tests automatisés

Mise à jour : novembre 2007

Cette vue d'ensemble décrit comment Microsoft UI Automation peut être utile comme infrastructure pour l'accès par programme dans les scénarios de tests automatisés.

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

UI Automation a été développé pour succéder à 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. L'infrastructure Active Accessibility n'a pas été conçue en considérant l'automation des tests même si elle a évolué vers ce rôle en raison des spécifications très similaires d'accessibilité et d'automation. En plus de fournir des solutions plus raffinées pour l'accessibilité, UI Automation est également conçu pour fournir des fonctionnalités robustes pour les tests automatisés. Par exemple, Active Accessibility repose sur une seule interface pour exposer des informations sur l'interface utilisateur et collecter les informations requises par les produits AT ; UI Automation sépare les deux modèles.

Un fournisseur et un client sont requis pour implémenter UI Automation et le rendre utile comme outil de test automatisé. Les fournisseurs UI Automation sont des applications telles que Microsoft Word, Excel et d'autres applications tierces ou des contrôles 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.

Remarque :

Cette vue d'ensemble vise à exposer les nouvelles fonctions et les fonctions améliorées de tests automatisés dans UI Automation. Elle n'est pas destinée à fournir des informations sur les fonctionnalités d'accessibilité et ne traite de l'accessibilité que lorsque cela est nécessaire.

Cette rubrique comprend les sections suivantes.

  • UI Automation dans un fournisseur
  • UI Automation dans un client
  • Outils et technologies associés
  • Sécurité
  • Rubriques connexes

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 les actions qu'un utilisateur final peut effectuer sur l'objet d'interface utilisateur à l'aide du clavier standard et de l'interaction souris.

Une fois ces actions clés identifiées, les modèles de contrôleUI 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 sur le contrôle. Par exemple, l'interaction utilisateur avec un contrôle zone de liste déroulante (comme la boîte de dialogue Exécuter) implique généralement le développement et la réduction de la zone de liste déroulante 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.

Remarque :

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 que ces contrôles sont équivalents d'un point de vue fonctionnel. Des modèles de contrôle ont été développés pour représenter ces comportements de contrôles courants. Pour plus d'informations, consultez Vue d'ensemble des modèles de contrôle UI Automation.

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 propres à l'infrastructure pour exposer les propriétés et les comportements des contrôles dans cette infrastructure. Étant donné qu'il peut simultanément exister plusieurs infrastructures d'interface utilisateur différentes dans les systèmes d'exploitation Windows, notamment Win32, Windows Forms et Windows Presentation Foundation (WPF), il peut s'avérer difficile de tester plusieurs applications avec des contrôles apparemment semblables. Par exemple, le tableau suivant indique les noms de propriété propres à l'infrastructure requis pour récupérer le nom (ou texte) associé à un contrôle bouton et affiche la seule propriété UI Automation équivalente.

Type de contrôle UI Automation

Infrastructure d'interface utilisateur

Propriété propre à l'infrastructure

Propriété UI Automation

Button

Windows Presentation Foundation

Content

NameProperty

Button

Win32

Caption

NameProperty

Image

HTML

alt

NameProperty

Les fournisseurs UI Automation sont chargés de mapper les propriétés propres à 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é. Pour plus d'informations sur l'implémentation de modèles de contrôle, consultez Modèles de contrôle UI Automation et Modèle de texte UI Automation.

UI Automation dans un client

De nombreux scénarios et outils de tests automatisés ont pour objectif la manipulation cohérente et répétée de l'interface utilisateur. Cela peut impliquer le test unitaire de contrôles spécifiques jusqu'à l'enregistrement et la lecture de scripts de test qui parcourent une série d'actions génériques sur un groupe de contrôles.

L'une des complications issues des applications automatisées est la difficulté à synchroniser un test avec une cible dynamique. Par exemple, un contrôle de zone de liste, contenu dans le Gestionnaire des tâches Windows par exemple, 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 semblables peuvent également survenir lorsque vous tentez de répéter des modifications de focus simples dans une interface utilisateur hors du contrôle de l'application de test.

Accès par programme

L'accès par programme permet d'imiter, via le code, toute interaction ou expérience exposée par les entrées traditionnelles de souris et de clavier. UI Automation active l'accès par programme via cinq composants :

Propriétés clés pour l'automation des tests

La capacité à identifier de manière unique, puis à localiser tout contrôle dans l'interface utilisateur est à la base du fonctionnement des applications de tests automatisés sur cette interface utilisateur. Plusieurs propriétés Microsoft UI Automation utilisées par les clients et les fournisseurs facilitent cette procédure.

AutomationID

Identifie de manière unique un élément Automation par rapport à ses frères. AutomationIdProperty n'est pas localisé, contrairement à une propriété telle que NameProperty qui est généralement localisée si un produit est fourni dans plusieurs langues. Consultez Utiliser la propriété AutomationID.

Remarque :

AutomationIdProperty n'assure pas une identité unique dans toute 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, eux-mêmes, contiennent plusieurs éléments de menu 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 les éléments de menu de niveau supérieur.

ControlType

Identifie le type de contrôle représenté par un élément Automation. La connaissance du type de contrôle peut fournir des informations significatives. Consultez Vue d'ensemble des types de contrôle UI Automation.

NameProperty

Il s'agit d'une chaîne de texte qui identifie ou explique un contrôle. La propriété NameProperty doit être utilisée avec précaution car elle peut être localisée. Consultez Vue d'ensemble des propriétés UI Automation.

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

Ajouter les références UI Automation.

Les dll UI Automation nécessaires pour les clients UI Automation sont répertoriés ci-après.

  • UIAutomationClient.dll fournit l'accès aux API côté client UI Automation.

  • UIAutomationClientSideProvider.dll permet d'automatiser les contrôles Win32. Consultez Prise en charge d'UI Automation pour les contrôles standard.

  • 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 utiliser les fonctions d'UI Automation, excepté 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 utiliser les fonctions de la gestion du texte d'UI Automation.

Rechercher les contrôles intéressants.

Les scripts de tests automatisés localisent des éléments UI Automation qui représentent les contrôles intéressants dans l'arborescence Automation.

Plusieurs méthodes permettent d'obtenir des éléments UI Automation avec du code.

  • Interroger l'interface utilisateur à l'aide d'une instruction Condition. C'est en général dans ce cas que le AutomationIdProperty indépendant du langage est utilisé.

Remarque :

AutomationIdProperty peut être obtenu à l'aide d'un outil tel que UI Spy (UISpy.exe) qui permet de détailler les propriétés UI Automation d'un contrôle.

  • Utilisez la classe TreeWalker pour parcourir toute l'arborescenceUI Automation ou un de ses sous-ensembles.

  • Suivez le focus.

  • Utilisez le hWnd du contrôle.

  • Utilisez l'emplacement à l'écran, tel que l'emplacement du curseur de la souris.

Consultez Obtention d'éléments UI Automation.

Obtenir des modèles de contrôle.

Les modèles de contrôle exposent les comportements courants pour les contrôles semblables 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. Par exemple, le modèle de contrôleInvokePattern pour les fonctionnalités de bouton typiques ou le modèle de contrôleWindowPattern pour les fonctionnalités de fenêtre.

Consultez Vue d'ensemble des modèles de contrôle UI Automation.

Automatiser l'interface utilisateur.

Les scripts de tests automatisés peuvent maintenant contrôler toute interface utilisateur présentant un intérêt dans une infrastructure d'interface utilisateur à l'aide des informations et des fonctionnalités exposées par les modèles de contrôleUI Automation.

Outils et technologies associés

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

  • UI Spy (UISpy.exe) est une application d'interface graphique utilisateur (GUI, Graphical User Interface) qui peut être utilisée pour rassembler des informations UI Automation pour le développement et le débogage de fournisseurs et de clients. UI Spy est inclus dans le Kit de développement logiciel (SDK) Windows.

  • UIAutoCmd est un outil de ligne de commande doté de fonctions semblables à UI Spy.

  • MSAABridge expose des informations UI Automation aux clients Active Accessibility. La liaison d'UI Automation à Active Accessibility a pour principal objectif de permettre aux clients Active Accessibility existants d'interagir avec toute infrastructure ayant implémenté UI Automation.

Sécurité

Pour plus d'informations sur la sécurité, consultez Vue d'ensemble de la sécurité UI Automation.

Voir aussi

Autres ressources

Notions de base d'UI Automation