powershell uiautomation tutorial
PowerShell UIAutomation Tutorial: UI Automation of Desktop Applications
UIAutomation er et open source-prosjekt PowerShell-utvidelse for GUI-automatiseringstester. Den støtter Win32, Windows Form, WPF og så videre.
I denne opplæringen vil vi fokusere på hvordan PowerShell bruker modulen til å implementere UI-automatisering. For å forklare dette vil vi bruke Windows Form-applikasjonen som et eksempel.
Hva du vil lære:
- Komme i gang med Microsoft UIAutomation
- Importer UIAutomation
- UI Automation med eksempler
- Finn foreldre-barn-forholdet og egenskapene til kontrollen
- Avansert implementering: forenkle tilnærmingen til å skrive manuset
- Konklusjon:
- Anbefalt lesing
Komme i gang med Microsoft UIAutomation
Siden prosjektet gir det eneste biblioteket for PowerShell-skriptene, krever det ikke installasjon, vi kan bare laste ned modulen og importere den til skriptet.
Les også => 35+ beste GUI-testverktøy med komplette detaljer
For å vite mer om PowerShell og forstå hvordan du kommer i gang med det, sjekk ut:
- UI-automatisering PowerShell-utvidelser
- Oversikt over UI-automatisering
- Windows PowerShell
- Kule ting om PowerShell 5.0 i Windows 10
Importer UIAutomation
1) Last ned og pakk ut den siste pakken fra den offisielle nettsiden: UI-automatisering PowerShell-utvidelser til la ocal path,for eksempel, C: UIAutomatisering
to) Importer modulen til PowerShell-skriptet: ( Merk : Når du kjører denne kommandoen, må du sørge for at du ikke kjører PowerShell som administrator)
Import-Module C:UIAutomationUIAutomation.dll
Nå kan vi bruke kommandoene som er definert i modulen for å starte UI-automatiseringstesting.
UI Automation med eksempler
La oss begynne med en enkel Windows-skjemaapplikasjon, som dekker noen typiske kontroller vi kan se i GUI-automatiseringstesting.
I dette eksemplet får vi beskjed om å automatisere trinnene for å sende inn et skjema med grunnleggende personlig informasjon:
Trinn 1) Skriv inn navnet 'Anna Smith'
Steg 2) Velg kjønn 'Kvinne'
Trinn 3) Velg 'Ja' som svar på om du er uteksaminert.
Trinn 4) Klikk 'Send'
Skriptet for å gjøre det er slik:
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'|
Du kan sannsynligvis fortelle fra skriptet ovenfor, hvordan det manipulerer kontrollene i applikasjonen. La oss forstå videre.
Ta det første trinnet som et eksempel:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Her er en oversikt over hva som skjer i denne linjen:
1) Skriptet finner først toppvinduet og finner deretter barnets kontroll gjennom rørledningen. Den gjør dette til den finner målkontrollen - redigeringsboksen (eller tekstboksen) med navnet “Navn”.
to) Når du finner kontrollen, hevder den typen kontrollen slik at du vet hvilken kommando du skal bruke, f.eks. Get-UIAWindow - er et vindu og Get-UIAEdit - er en redigerings- / tekstboks.
3) Det krever også en eller flere egenskaper for kontrollen. I dette eksemplet bruker vi bare Navn som egenskap for å identifisere kontrollen. Merk : AutomationId og Class er også egenskaper som ofte brukes når du finner en kontroll.
4) Etter at målkontrollen er funnet, bruker vi en annen kommando for å påkalle handlingen på kontrollen. I dette eksemplet er det Set-UIATextBoxText å angi teksten for en tekstboks.
Dette er den viktigste måten for UI Automation å realisere UI-automatisering.
verktøy som brukes i stor dataanalyse
Du finner kommandoene for forskjellige typer kontroller og kommandoen for å påkalle handlinger i hjelpedokumentene på det offisielle nettstedet: UI-automatisering PowerShell-utvidelser
Resten av trinnene er like i vene. La oss nå gå videre til andre viktige emner.
Finn foreldre-barn-forholdet og egenskapene til kontrollen
Det er enkelt å skrive slike rørledninger, men den vesentlige delen er hvordan man finner egenskapene og barnekontrollene som inneholder målkontrollen. Etter min erfaring er dette de to jeg har prøvd:
# 1) Bruk UIAutomationSpy i pakken:
Det er et verktøy i pakken vi lastet ned som kan fange kontrollene på skrivebordet. Når brukergrensesnittet er klart på skrivebordet, åpner du UIAutomat ionSpy.exe :
- Klikk 'Start' for å starte opptaket.
- Flytt markøren for å kontrollere hva du skal fange.
- Når du finner kontrollen uthevet og skriptet vises i vindusgrensesnittet, betyr det at opptaket er vellykket.
- Klikk på 'Stopp' for å stoppe fangsten.
- Klikk på 'Hierarki' -fanen til venstre, så ser du foreldre-barn-forholdet til kontrollerne fra topp til mål
- Klikk 'Skript' -fanen til høyre, du kan se en fullstendig pipeline for kontrollen:
Vær oppmerksom på at vi ikke trenger å inkludere alle kontroller og alle eiendommer fra rørledningen for å søke etter målkontrollen. Egentlig er det vi bruker ganske enkelt (se eksemplet ovenfor):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Dessverre eksisterer det ingen offisiell sølvkule på hvor mange kontroller som skal inkluderes. Det krever prøving og erfaring.
Hva er ikke så bra med UIAutomationSpy:
- Den har ikke et vennlig grensesnitt
- Du må fange den ene kontrollen etter den andre og få detaljene du vil ha.
# 2) Bruk eksterne verktøy for å inspisere kontrollene for Windows-skrivebordet
Et foreslått verktøy er inspect.exe levert av Microsoft. Når du åpner verktøyet, får du alle detaljene i kontrollene i vinduet:
Hva er ikke så bra med inspect.exe
- Det er ingen måte å eksportere detaljene på.
- UI Automation-modulen inneholder noen kommandoer som Get-UIAControlChildren for å få alle barnekontrollene. inspect.exe kan krysse alle kontrollene under vinduet, men ytelsen blir ikke vurdert for komplekse vinduer.
Avansert implementering: forenkle tilnærmingen til å skrive manuset
Fra innledningen ovenfor kan du se at rørledninger er den viktigste måten å skrive skriptet på ved hjelp av modulen, selv om rørledningene noen ganger ikke er så lange. Det er en tilnærming for å gjøre det enklere og enklere, og hovedideen er å trekke ut dataene til kontrollene i en XML-fil, og bli med i rørledningene når det er nødvendig fra XML-filen.
La oss fortsette med eksemplet ovenfor:
Generer først en XML-fil inkludert egenskapene og foreldre-barn-forholdet til kontrollene. Vi legger til noder for hver kontroll som kreves: nodenavnet er unikt, slik at vi kan finne kontrollen umiddelbart etter navn, og kommandoen og dens egenskaper er angitt som egenskapene til nodene.
Her er XML-filen for testskjemaet vi tester:
Noen funksjoner bør defineres for å bli med i rørledningene ved å søke i xml-filen og utføre dem:
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 }
Så langt er dette nesten engangsoppgaver med mindre selve kontrollene endres.
Nå kan vi automatisere trinnene i følgende skript:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
På denne måten kan vi kvitte oss med hauger med rørledninger i manusene, og ferdighetene vil forbedres sterkt.
hvordan åpne swf-filer på pc
Anbefalt lesing => Introduksjon til Sikuli GUI Automation Tool
Konklusjon:
Microsoft UIAutomation er et flott bibliotek for de som vil ha UI-automatiseringstester på Windows-skrivebordet med PowerShell.
Ovenstående introduksjon er bare et segment av verktøyet. Den forenklede tilnærmingen er inspirert av ideen om å hente ut data fra testing av skript, noe som er en god måte å forbedre ferdighetene våre i å skrive automatiseringstester. Utforsk mer om det her .
Vennligst del dine kommentarer nedenfor, og vi vil gjerne høre opplevelser fra UIAutomation-brukere.
Anbefalt lesing
- In-Depth Eclipse Tutorials For Beginners
- SeeTest Automation Tutorial: A Mobile Test Automation Tool Guide
- DevOps Automation: Hvordan brukes automatisering i DevOps Practice
- Geb Tutorial - Browser Automation Testing Using Geb Tool
- Hva er automatiseringstesting (Ultimate Guide to Start Test Automation)
- Selendroid Tutorial: Android Mobile Test Automation Framework (del 1)
- Katalon Studio Tutorial: Et gratis testautomatiseringsverktøy du har ventet på
- Appium Studio for Eclipse: End-to-end Appium / Selenium Automation From Eclipse