powershell uiautomation tutorial
Tutoriel PowerShell UIAutomation: Automatisation de l'interface utilisateur des applications de bureau
UIAutomation est une extension PowerShell de projet open source pour les tests d'automatisation GUI. Il prend en charge Win32, Windows Form, WPF, etc.
Dans ce didacticiel, nous allons nous concentrer sur la manière dont PowerShell utilise le module pour implémenter l'automatisation de l'interface utilisateur. Pour expliquer cela, nous utiliserons l'application Windows Form comme exemple.
Ce que vous apprendrez:
- Premiers pas avec Microsoft UIAutomation
- Importer UIAutomation
- Automatisation de l'interface utilisateur avec des exemples
- Rechercher la relation parent-enfant et les propriétés du contrôle
- Implémentation avancée: simplifiez l'approche d'écriture du script
- Conclusion:
- lecture recommandée
Premiers pas avec Microsoft UIAutomation
Étant donné que le projet fournit la seule bibliothèque pour les scripts PowerShell, il ne nécessite pas d'installation, nous pouvons simplement télécharger le module et l'importer dans le script.
Lire aussi => Plus de 35 meilleurs outils de test GUI avec des détails complets
Pour en savoir plus sur PowerShell et pour comprendre comment démarrer avec, consultez:
- Extensions PowerShell UI Automation
- Présentation de l'automatisation de l'interface utilisateur
- Windows PowerShell
- Cool Stuff sur PowerShell 5.0 dans Windows 10
Importer UIAutomation
1) Téléchargez et décompressez le dernier package depuis son site officiel: Extensions PowerShell UI Automation vers la voie ocale,par exemple, C: UIAutomation
deux) Importez le module dans le script PowerShell: ( Noter : Lorsque vous exécutez cette commande, assurez-vous que vous n'exécutez pas PowerShell en tant qu'administrateur)
Import-Module C:UIAutomationUIAutomation.dll
Nous pouvons maintenant utiliser les commandes définies dans le module pour démarrer les tests d'automatisation de l'interface utilisateur.
Automatisation de l'interface utilisateur avec des exemples
Commençons par une simple application de formulaire Windows, qui couvre certains contrôles typiques que nous pouvons voir dans les tests d'automatisation de l'interface graphique.
Dans cet exemple, il nous est demandé d'automatiser les étapes de soumission d'un formulaire avec quelques informations personnelles de base:
Étape 1) Saisissez le nom «Anna Smith»
Étape 2) Sélectionnez le sexe 'Femme'
Étape 3) Choisissez «Oui» comme réponse si vous avez obtenu votre diplôme.
Étape 4) Cliquez sur «Soumettre»
Le script pour le faire est comme ceci:
Start-Process 'Test Form' #Step1: input the name “Anna Smith” Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith' #Step2: select the gender “Female” Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAComboBox -Name 'Gender' | Invoke-UIAListItemSelectItem -ItemName 'Female' #Step3: choose “Yes” as the answer of if graduated. Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIARadioButton -AutomationId 'Graduated' -Name 'Yes'|Invoke-UIAControlClick #Step4: click “Submit” Get-UIAWindow -Name 'Test Form' | Get-UIAButton -Name 'Submit'|
Vous pouvez probablement dire à partir du script ci-dessus, comment il manipule les contrôles dans l'application. Comprenons plus loin.
Prenez la première étape à titre d'exemple:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Voici un aperçu de ce qui se passe dans cette ligne:
1) Le script trouve d'abord la fenêtre supérieure, puis trouve son contrôle enfant via le pipeline. Il le fait jusqu'à ce qu'il trouve le contrôle cible - la zone d'édition (ou zone de texte) avec le nom «Nom».
deux) En trouvant le contrôle, il revendique le type de contrôle afin que vous sachiez quelle commande utiliser, par exemple Get-UIAWindow - est une fenêtre et Get-UIAEdit - est une zone d'édition / texte.
3) Il nécessite également une ou plusieurs propriétés du contrôle. Dans cet exemple, nous utilisons uniquement Nom comme propriété pour identifier le contrôle. Noter : AutomationId et Class sont également des propriétés couramment utilisées lors de la recherche d'un contrôle.
4) Une fois le contrôle cible trouvé, nous utilisons une autre commande pour appeler l'action sur le contrôle. Dans cet exemple, c'est Set-UIATextBoxText pour définir le texte d'une zone de texte.
C'est le principal moyen pour UI Automation de réaliser l'automatisation de l'interface utilisateur.
comment ajouter des éléments d'un tableau
Vous pouvez trouver les commandes pour différents types de contrôles et la commande pour appeler des actions dans les documents d'aide de son site officiel: Extensions PowerShell UI Automation
Le reste des étapes est similaire dans la veine. Alors, passons maintenant à d'autres sujets importants.
Rechercher la relation parent-enfant et les propriétés du contrôle
Il est simple d'écrire de tels pipelines, mais la partie importante est de trouver les propriétés et les contrôles enfants contenant le contrôle cible. D'après mon expérience, ce sont les deux que j'ai essayés:
meilleur ripper de dvd gratuit pour windows
# 1) Utilisez UIAutomationSpy dans le package:
Il y a un outil dans le package que nous avons téléchargé qui peut capturer les contrôles sur le bureau. Lorsque l'interface utilisateur est prête sur le bureau, ouvrez UIAutomat ionSpy.exe :
- Cliquez sur «Démarrer» pour démarrer la capture.
- Déplacez le curseur sur le contrôle que vous voulez capturer.
- Lorsque vous trouvez le contrôle en surbrillance et le script affiché sur son interface de fenêtre, cela signifie que la capture est réussie.
- Cliquez sur «Arrêter» pour arrêter la capture.
- Cliquez sur l'onglet 'Hiérarchie' sur la gauche et vous verrez la relation parent-enfant des contrôleurs du haut vers la cible
- Cliquez sur l'onglet 'Script' sur la droite, vous pouvez voir un pipeline complet pour le contrôle:
Notez que nous n'avons pas besoin d'inclure chaque contrôle et chaque propriété du pipeline pour rechercher le contrôle cible. En fait, ce que nous utilisons est assez simple (voir l'exemple ci-dessus):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Malheureusement, il n’existe pas de solution miracle officielle sur le nombre de contrôles à inclure. Cela demande de l’essai et de l’expérience.
Ce qui n’est pas si génial avec UIAutomationSpy:
- Il n'a pas d'interface conviviale
- Vous devrez capturer un contrôle après l'autre et obtenir les détails souhaités.
# 2) Utilisez des outils externes pour inspecter les contrôles du bureau Windows
Un outil suggéré est inspect.exe fourni par Microsoft. Lorsque vous ouvrez l'outil, vous obtenez tous les détails des commandes de la fenêtre:
Ce qui n’est pas si génial avec inspect.exe
- Il n'y a aucun moyen d'exporter les détails.
- Le module UI Automation fournit des commandes telles que Get-UIAControlChildren pour obtenir tous les contrôles enfants. inspect.exe peut traverser tous les contrôles sous la fenêtre, mais les performances ne sont pas évaluées pour les fenêtres complexes.
Implémentation avancée: simplifiez l'approche d'écriture du script
De l'introduction ci-dessus, vous pouvez voir que les pipelines sont le principal moyen d'écrire le script à l'aide du module, bien que parfois les pipelines ne soient pas si longs. Il existe une approche pour le rendre plus simple et plus facile, et l'idée principale est d'extraire les données des contrôles dans un fichier XML et de joindre les pipelines si nécessaire à partir du fichier XML.
Continuons avec l'exemple ci-dessus:
Tout d'abord, générez un fichier XML comprenant les propriétés et la relation parent-enfant des contrôles. Nous ajoutons des nœuds pour chaque contrôle requis: le nom du nœud est unique afin que nous puissions trouver le contrôle immédiatement par son nom, et la commande et ses propriétés sont définies comme propriétés des nœuds.
Voici le fichier XML du formulaire de test que nous testons:
Certaines fonctions doivent être définies pour rejoindre les pipelines en recherchant le fichier xml et en les exécutant:
function getPipeline($nodeName) { $object_xml = (Invoke-WebRequest(controls.xml')) $control = $object_xml.SelectSingleNode('//$nodeName ') $pipeline = '' do { $string = '' $string = $control.method foreach($a in $control.Attributes) { if(!$a.Name.ToLower().Equals('method')) { $string = $string + ' -' + $a.Name + ' '' +$a.Value +''' } } $ pipeline = $string + ' |' +$ pipeline $control= $control.ParentNode } while (!$control.Name.Equals('#')) return $pipeline.Remove($pipeline.length-1,1) } function setText($textbox,$value) Set-UiaEditText -text $value' Invoke-Expression $iex function selectItem($combobox,$item) { #get the pipeline and invoke the expression } function toggleRadioButton($radioButton) { #get the pipeline and invoke the expression } function click($control) { #get the pipeline and invoke the expression }
Jusqu'à présent, ce sont des tâches presque ponctuelles à moins que les contrôles eux-mêmes ne changent.
Nous pouvons désormais automatiser les étapes dans les scripts suivants:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
De cette façon, nous pouvons nous débarrasser des paquets de pipelines dans les scripts, et la compétence sera grandement améliorée.
Lecture recommandée => Introduction à l'outil d'automatisation Sikuli GUI
Conclusion:
Microsoft UIAutomation est une excellente bibliothèque pour ceux qui souhaitent effectuer des tests d'automatisation de l'interface utilisateur sur le bureau Windows avec PowerShell.
L'introduction ci-dessus n'est qu'un segment de l'outil. Son approche simplifiée s'inspire de l'idée d'extraire des données à partir de scripts de test, ce qui est un bon moyen d'améliorer notre maîtrise de l'écriture de tests d'automatisation. En savoir plus ici .
Veuillez partager vos commentaires ci-dessous et nous aimerions entendre les expériences des utilisateurs d'UIAutomation.
lecture recommandée
- Tutoriels Eclipse détaillés pour les débutants
- Tutoriel SeeTest Automation: Un guide de l'outil d'automatisation des tests mobiles
- Automatisation DevOps: comment l'automatisation est-elle appliquée dans la pratique DevOps
- Tutoriel Geb - Test d'automatisation du navigateur à l'aide de l'outil Geb
- Qu'est-ce que les tests d'automatisation (Guide ultime pour démarrer l'automatisation des tests)
- Tutoriel Selendroid: Framework d'automatisation des tests mobiles Android (partie 1)
- Tutoriel Katalon Studio: Un outil d'automatisation de test gratuit que vous attendiez
- Appium Studio pour Eclipse: l'automatisation Appium / Selenium de bout en bout d'Eclipse