powershell uiautomation tutorial
Esercitazione sull'automazione dell'interfaccia utente di PowerShell: automazione dell'interfaccia utente delle applicazioni desktop
UIAutomation è un'estensione di PowerShell del progetto open source per i test di automazione della GUI. Supporta Win32, Windows Form, WPF e così via.
In questo tutorial, ci concentreremo su come PowerShell utilizza il modulo per implementare l'automazione dell'interfaccia utente. Per spiegare questo useremo l'applicazione Windows Form come esempio.
Cosa imparerai:
- Introduzione a Microsoft UIAutomation
- Importa UIAutomation
- Automazione dell'interfaccia utente con esempi
- Trova la relazione padre-figlio e le proprietà del controllo
- Implementazione avanzata: semplifica l'approccio alla scrittura dello script
- Conclusione:
- Lettura consigliata
Introduzione a Microsoft UIAutomation
Poiché il progetto fornisce l'unica libreria per gli script di PowerShell, non richiede installazione, possiamo semplicemente scaricare il modulo e importarlo nello script.
Leggi anche => 35+ migliori strumenti di test GUI con dettagli completi
Per saperne di più su PowerShell e per capire come iniziare, dai un'occhiata a:
- Estensioni PowerShell per automazione interfaccia utente
- Panoramica dell'automazione dell'interfaccia utente
- Windows PowerShell
- Cose interessanti su PowerShell 5.0 in Windows 10
Importa UIAutomation
1) Scarica e decomprimi l'ultimo pacchetto dal suo sito ufficiale: Estensioni PowerShell per automazione interfaccia utente al percorso ocale,per esempio, C: UIAutomation
Due) Importa il modulo nello script di PowerShell: ( Nota : Quando esegui questo comando, assicurati di non eseguire PowerShell come amministratore)
Import-Module C:UIAutomationUIAutomation.dll
Ora possiamo utilizzare i comandi definiti nel modulo per avviare il test dell'automazione dell'interfaccia utente.
Automazione dell'interfaccia utente con esempi
Cominciamo con una semplice applicazione Windows Form, che copre alcuni controlli tipici che potremmo vedere nei test di automazione della GUI.
In questo esempio, ci viene detto di automatizzare i passaggi per inviare un modulo con alcune informazioni personali di base:
Passo 1) Inserisci il nome 'Anna Smith'
Passo 2) Seleziona il sesso 'Femmina'
Passaggio 3) Scegli 'Sì' come risposta se sei laureato.
Passaggio 4) Fare clic su 'Invia'
Lo script per farlo è così:
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'|
Probabilmente puoi capire dallo script sopra, come sta manipolando i controlli nell'applicazione. Cerchiamo di capire ulteriormente.
Fai il primo passo come esempio:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Ecco una ripartizione di ciò che sta accadendo in questa riga:
1) Lo script prima trova la finestra in alto e poi trova il suo controllo figlio attraverso la pipeline. Lo fa finché non trova il controllo di destinazione, la casella di modifica (o casella di testo) con il nome 'Nome'.
Due) Quando trova il controllo, rivendica il tipo di controllo in modo che tu sappia quale comando usare, ad es. Get-UIAWindow - è una finestra e Get-UIAEdit - è una casella di modifica / testo.
3) Richiede anche una o più proprietà del controllo. In questo esempio, usiamo solo Name come proprietà per identificare il controllo. Nota : AutomationId e Class sono anche proprietà comunemente utilizzate quando si trova un controllo.
4) Dopo aver trovato il controllo di destinazione, utilizziamo un altro comando per richiamare l'azione sul controllo. In questo esempio, è Set-UIATextBoxText per impostare il testo per una casella di testo.
Questo è il modo principale per l'automazione dell'interfaccia utente per realizzare l'automazione dell'interfaccia utente.
il test del software riprende i campioni 2 anni di esperienza
Puoi trovare i comandi per diversi tipi di controlli e il comando per invocare azioni nei documenti della guida del suo sito ufficiale: Estensioni PowerShell per automazione interfaccia utente
Il resto dei passaggi è simile nella vena. Quindi, passiamo ora ad altri argomenti importanti.
Trova la relazione padre-figlio e le proprietà del controllo
È semplice scrivere tali pipeline, ma la parte significativa è come trovare le proprietà ei controlli figlio che contengono il controllo di destinazione. Nella mia esperienza, questi sono i due che ho provato:
# 1) Usa UIAutomationSpy nel pacchetto:
C'è uno strumento nel pacchetto che abbiamo scaricato in grado di acquisire i controlli sul desktop. Quando l'interfaccia utente è pronta sul desktop, apri UIAutomat ionSpy.exe :
- Fare clic su 'Start' per avviare l'acquisizione.
- Spostare il cursore sul controllo di cosa catturare.
- Quando trovi il controllo evidenziato e lo script visualizzato sulla sua interfaccia a finestra, significa che l'acquisizione è riuscita.
- Fare clic su 'Stop' per interrompere l'acquisizione.
- Fai clic sulla scheda 'Gerarchia' a sinistra e vedrai la relazione genitore-figlio dei controller dall'alto al target
- Fai clic sulla scheda 'Script' a destra, puoi vedere una pipeline completa per il controllo:
Tieni presente che non è necessario includere tutti i controlli e tutte le proprietà della pipeline per cercare il controllo di destinazione. In realtà, quello che usiamo è abbastanza semplice (vedi l'esempio sopra):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Sfortunatamente, non esiste una pallottola d'argento ufficiale su quanti controlli dovrebbero essere inclusi. Richiede prova ed esperienza.
Cosa non è così eccezionale di UIAutomationSpy:
miglior anti spyware gratuito per windows 10
- Non ha un'interfaccia amichevole
- Dovrai acquisire un controllo dopo l'altro e ottenere i dettagli desiderati.
# 2) Usa strumenti esterni per ispezionare i controlli per il desktop di Windows
Uno strumento suggerito è inspect.exe fornito da Microsoft. Quando apri lo strumento, otterrai tutti i dettagli dei controlli nella finestra:
Che cosa non è eccezionale di inspect.exe
- Non è possibile esportare i dettagli.
- Il modulo di automazione dell'interfaccia utente fornisce alcuni comandi come Get-UIAControlChildren per ottenere tutti i controlli figlio. inspect.exe può attraversare tutti i controlli sotto la finestra, ma le prestazioni non vengono valutate per finestre complesse.
Implementazione avanzata: semplifica l'approccio alla scrittura dello script
Dall'introduzione sopra, potresti vedere che le pipeline sono il modo principale per scrivere lo script utilizzando il modulo, anche se a volte le pipeline non sono così lunghe. Esiste un approccio per renderlo più semplice e facile e l'idea principale è estrarre i dati dei controlli in un file XML e unire le pipeline quando necessario dal file XML.
Continuiamo con l'esempio precedente:
Innanzitutto, genera un file XML che includa le proprietà e la relazione padre-figlio dei controlli. Aggiungiamo nodi per ogni controllo richiesto: il nome del nodo è univoco in modo che possiamo trovare il controllo immediatamente per nome, e il comando e le sue proprietà sono impostati come proprietà dei nodi.
Ecco il file XML per il modulo di prova che testiamo:
Alcune funzioni dovrebbero essere definite per unire le pipeline cercando il file xml ed eseguirle:
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 }
Finora, queste sono attività quasi una tantum a meno che i controlli stessi non cambino.
Ora possiamo automatizzare i passaggi nei seguenti script:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
In questo modo, possiamo sbarazzarci di un sacco di pipeline negli script e la competenza sarà notevolmente migliorata.
Lettura consigliata => Introduzione a Sikuli GUI Automation Tool
Conclusione:
Microsoft UIAutomation è un'ottima libreria per coloro che desiderano eseguire test di automazione dell'interfaccia utente sul desktop Windows con PowerShell.
L'introduzione sopra è solo un segmento dello strumento. Il suo approccio semplificato è ispirato all'idea di estrarre i dati dagli script di test, che è un buon modo per migliorare la nostra competenza nella scrittura di test di automazione. Scopri di più su di esso Qui .
Per favore condividi i tuoi commenti qui sotto e ci piacerebbe sentire le esperienze degli utenti di UIAutomation.
Lettura consigliata
- Tutorial approfonditi su Eclipse per principianti
- SeeTest Automation Tutorial: A Mobile Test Automation Tool Guide
- Automazione DevOps: come viene applicata l'automazione nella pratica DevOps
- Tutorial Geb - Test dell'automazione del browser utilizzando lo strumento Geb
- Che cos'è il test di automazione (Guida definitiva per avviare l'automazione del test)
- Tutorial Selendroid: Android Mobile Test Automation Framework (Parte 1)
- Tutorial Katalon Studio: uno strumento gratuito di automazione del test che stavi aspettando
- Appium Studio per Eclipse: automazione end-to-end Appium / Selenium di Eclipse