Utilisation de UI Automation pour les tests automatisés
Remarque
Cette documentation est destinée 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 informations les plus récentes sur UI Automation, consultez API Windows Automation : UI Automation.
Cette vue d’ensemble décrit comment Microsoft UI Automation peut être utile en tant que framework pour l’accès par programmation dans les scénarios de test automatisé.
UI Automation fournit un modèle objet unifié qui permet à toutes les infrastructures d’interface utilisateur d’exposer des fonctionnalités complexes et enrichies de manière accessible et facilement automatisée.
UI Automation a été développé comme successeur de Microsoft Active Accessibility. L’accessibilité active est une infrastructure existante conçue pour fournir une solution permettant de rendre les contrôles et les applications accessibles. L’accessibilité active n’a pas été conçue avec l’automatisation des tests à l’esprit, même si elle a évolué dans ce rôle en raison des exigences très similaires de l’accessibilité et de l’automatisation. UI Automation, en plus de fournir des solutions plus affinées pour l’accessibilité, est également conçue spécifiquement pour fournir des fonctionnalités robustes pour les tests automatisés. Par exemple, l’accessibilité active 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 doivent implémenter UI Automation pour qu’il soit utile 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 test automatisés et des applications technologiques d’assistance.
Remarque
L’objectif de cette vue d’ensemble est de présenter les nouvelles fonctionnalités de test automatisé améliorées d’UI Automation. Cette vue d’ensemble n’est pas destinée à fournir des informations sur les fonctionnalités d’accessibilité et ne traite pas de l’accessibilité autre que si nécessaire.
L’automatisation de l’interface utilisateur chez un fournisseur
Pour qu’une interface utilisateur soit automatisée, un développeur d’une application ou d’un contrôle doit examiner les actions qu’un utilisateur final peut effectuer sur l’objet d’interface utilisateur à l’aide d’une interaction de clavier et de souris standard.
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 sur le contrôle. Par exemple, l'interaction utilisateur avec une boîte combo (comme la boîte de dialogue d'exécution) implique généralement de développer et de réduire la boîte combo pour masquer ou afficher une liste d'éléments, sélectionner un élément dans cette liste ou ajouter une nouvelle valeur via la saisie au clavier.
Remarque
Avec d’autres modèles d’accessibilité, les développeurs doivent collecter des informations directement à partir de boutons individuels, de menus ou d’autres contrôles. Malheureusement, chaque type de contrôle vient en dizaines de variations mineures. En d’autres termes, même si dix variantes d’un bouton push peuvent tous fonctionner de la même façon et effectuer la même fonction, ils doivent tous être traités comme des contrôles uniques. Il n’existe aucun moyen de savoir que ces contrôles sont fonctionnellement équivalents. Les modèles de contrôle ont été développés pour représenter ces comportements de contrôle courants. 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 sont nécessaires pour connaître les informations spécifiques à l’infrastructure afin d’exposer les propriétés et les comportements des contrôles dans ce framework. Étant donné qu’il peut y avoir plusieurs frameworks d’interface utilisateur différents présents à tout moment dans les systèmes d’exploitation Windows, notamment Win32, Windows Forms et Windows Presentation Foundation (WPF), il peut s’agir d’une tâche intimidante pour tester plusieurs applications avec des contrôles qui semblent similaires. Par exemple, le tableau suivant présente les noms de propriétés spécifiques à l’infrastructure requis pour récupérer le nom (ou le texte) associé à un contrôle bouton et affiche la propriété UI Automation équivalente unique.
Type de contrôle UI Automation | Infrastructure d’interface utilisateur | Propriété spécifique à l’infrastructure | Propriété UI Automation |
---|---|---|---|
Button | Windows Presentation Foundation | Contenu | NameProperty |
Button | Win32 | Légende | NameProperty |
Image | HTML | alt | NameProperty |
Les fournisseurs UI Automation sont chargés de mapper les propriétés spécifiques au framework 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 outils et scénarios de test automatisés est la manipulation cohérente et reproductible de l’interface utilisateur. Cela peut impliquer des tests unitaires des contrôles spécifiques jusqu'à l'enregistrement et la lecture de scripts de test qui itèrent à travers une série d'actions génériques sur un groupe de composants.
Une complication qui provient d’applications automatisées est la difficulté de synchroniser un test avec une cible dynamique. Par exemple, un contrôle de zone de liste, tel qu’un contrôle contenu dans le Gestionnaire des tâches Windows, affiche une liste d’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, la tentative de répéter la sélection d’un élément spécifique dans la zone de liste avec une cohérence n’est pas possible. Des problèmes similaires peuvent également survenir lorsque vous tentez de répéter des modifications de focus simples dans une interface utilisateur qui est en dehors du contrôle de l’application de test.
Accès par programmation
L’accès par programmation permet d’imiter, par le biais du code, toute interaction et toute expérience exposées par l’entrée traditionnelle de la souris et du clavier. 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 Vue d’ensemble de l’arborescence UI Automation
Les éléments Automation sont des composants individuels dans l’interface utilisateur. Ils peuvent souvent être plus granulaires 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 ; ils peuvent être constitués d’informations de propriété, de méthode, d’événement et de structure. Pour plus d’informations, consultez l’aperçu des modèles de contrôle d’automatisation de l'interface utilisateur .
Les événements Automation fournissent des notifications et des informations sur les événements. Pour plus d'informations, consultez UI Automation Events Overview.
Propriétés clés pour l’automatisation des tests
La possibilité d’identifier et de localiser de manière unique tout contrôle au sein de l’interface utilisateur fournit la base des applications de test automatisées qui fonctionnent sur cette interface utilisateur. Il existe plusieurs propriétés Microsoft UI Automation utilisées par les clients et les fournisseurs qui l’aident.
AutomationID
Identifie de manière unique un élément d’automatisation parmi ses éléments voisins. 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 Use the AutomationID Property.
Remarque
AutomationIdProperty ne garantit pas une identité unique dans l’arborescence d’automatisation. Par exemple, une application peut contenir un contrôle de menu avec plusieurs éléments de menu de niveau supérieur qui, à son tour, ont 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 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 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ée avec précaution, car elle peut être localisée. 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 pour les clients UI Automation sont répertoriées ici. - UIAutomationClient.dll permet d’accéder 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 permet d’accéder aux types spécifiques définis dans UI Automation. |
Ajoutez l’espace de noms System.Windows.Automation. | Cet espace de noms contient tout ce dont les clients UI Automation ont besoin pour utiliser les fonctionnalités d’UI Automation, à l’exception de la gestion du texte. |
Ajoutez l’espace de noms System.Windows.Automation.Text. | Cet espace de noms contient tout ce dont les clients de l'UI Automation ont besoin pour utiliser les fonctionnalités de gestion de texte de l'UI Automation. |
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. C'est généralement là que le AutomationIdProperty neutre en termes de langue est utilisé. Remarque : Une AutomationIdProperty peut être obtenue à l’aide d’un outil tel que Inspect.exe capable de lister les propriétés d'automatisation de l'interface utilisateur d’un contrôle. - Utilisez la classe TreeWalker pour parcourir l’arborescence UI Automation entière ou un sous-ensemble de celui-ci. - Suivez le focus. - Utilisez le hWnd du contrôle. - Utilisez l’emplacement de 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 des comportements courants pour les contrôles fonctionnellement similaires. Après avoir localisé les contrôles qui nécessitent des tests, les scripts de test automatisés obtiennent les modèles de contrôle intéressants de ces éléments UI Automation. Par exemple, le modèle de contrôle InvokePattern pour les fonctionnalités de bouton classiques ou le modèle de contrôle WindowPattern pour les fonctionnalités de fenêtre. Consultez Vue d'ensemble des modèles de contrôles d'automatisation de l'interface utilisateur. |
Automatisez l’interface utilisateur. | Les scripts de test automatisés peuvent désormais contrôler n’importe quelle interface utilisateur intéressante à partir d’une infrastructure d’interface utilisateur à l’aide des informations et des fonctionnalités exposées par les modèles de contrôle UI Automation. |
Outils et technologies connexes
Il existe un certain nombre d’outils et technologies connexes qui prennent en charge les tests automatisés avec UI Automation.
Inspect.exe est une application d'interface utilisateur graphique (IUG) qui peut être utilisée pour collecter des informations d'automatisation de l'IU pour le développement et le débogage, que ce soit du côté du fournisseur ou du client. Inspect.exe est inclus dans le Kit de développement logiciel (SDK) Windows.
MSAABridge expose des informations d'UI Automation aux clients d'accessibilité active. L’objectif principal du pontage d’UI Automation vers l’accessibilité active consiste à permettre aux clients d’accessibilité active existants d’interagir avec n’importe quel framework qui a implémenté UI Automation.
Sécurité
Pour des informations sur la sécurité, voir Vue d'ensemble de la sécurité UI Automation.