Partager via


Utilisation d'UI Automation pour des tests automatisés

RemarqueRemarque

Cette documentation s'adresse aux développeurs .NET Framework qui veulent utiliser les classes UI Automation managées définies dans l'espace de noms System.Windows.Automation.Pour obtenir les informations les plus récentes sur UI Automation, consultez API Windows Automation : UI Automation (page éventuellement en anglais).

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'user interface (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 afin qu'il puisse être utilisé en tant qu'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.

RemarqueRemarque

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 UI 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'UI à l'aide du clavier standard et de l'interaction 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'UI) 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.

RemarqueRemarque

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'y a aucun moyen de savoir si ces contrôles sont équivalents du point de vue fonctionnel.Des modèles de contrôle ont été développés pour représenter ces comportements de contrôle communs.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

Contenu

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 itèrent au sein d'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 UI 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'UI est à la base du fonctionnement des applications de tests automatisés sur cette UI. Plusieurs propriétés Microsoft UI Automation utilisées par les clients et les fournisseurs facilitent cette procédure.

AutomationID

Identifie un élément d'automation de manière unique vis-à-vis de ses frères et sœurs. AutomationIdProperty n'est pas localisé, contrairement à une propriété telle que NameProperty qui est généralement localisée si un produit est expédié dans plusieurs langues. Consultez Utiliser la propriété AutomationID.

RemarqueRemarque

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. NameProperty doit être utilisé avec précaution car il peut être localisé. 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'UI à l'aide d'une instruction Condition. C'est en général dans ce cas que le AutomationIdProperty indépendant du langage est utilisé.

RemarqueRemarque
AutomationIdProperty peut être obtenu à l'aide d'un outil tel que UISpy.exe (UI Spy) qui permet de détailler les propriétés UI Automation d'un contrôle.
  • Utilisez la classe TreeWalker pour parcourir toute l'arborescence UI 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ôle InvokePattern pour les fonctionnalités de bouton typiques ou le modèle de contrôle WindowPattern 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 UI présentant un intérêt dans une infrastructure d'UI à l'aide des informations et des fonctionnalités exposées par les modèles de contrôle UI Automation.

Outils et technologies associés

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

  • UISpy.exe (UI Spy) est une application d'graphical user interface (GUI) 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 Windows Software Development Kit (SDK).

  • 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