powershell uiautomation tutorial
PowerShell UIAutomation Tutorial: UI Automation af Desktop Applications
UIAutomation er et open source-projekt PowerShell-udvidelse til GUI-automatiseringstest. Det understøtter Win32, Windows Form, WPF osv.
I denne vejledning vil vi fokusere på, hvordan PowerShell bruger modulet til at implementere UI-automatisering. For at forklare dette bruger vi Windows Form-applikationen som et eksempel.
Hvad du vil lære:
- Kom godt i gang med Microsoft UIAutomation
- Import UIAutomation
- UI Automation med eksempler
- Find forholdet mellem forælder og barn og egenskaberne ved kontrollen
- Avanceret implementering: Forenkle tilgangen til at skrive scriptet
- Konklusion:
- Anbefalet læsning
Kom godt i gang med Microsoft UIAutomation
Da projektet indeholder det eneste bibliotek til PowerShell-scriptsne, kræver det ikke installation, vi kan bare downloade modulet og importere det til scriptet.
Læs også => 35+ Bedste GUI-testværktøjer med komplette detaljer
Hvis du vil vide mere om PowerShell og forstå, hvordan du kommer i gang med det, skal du tjekke:
- UI-automatisering PowerShell-udvidelser
- UI Automation Oversigt
- Windows PowerShell
- Cool ting om PowerShell 5.0 i Windows 10
Import UIAutomation
1) Download og udpak den nyeste pakke fra dens officielle hjemmeside: UI-automatisering PowerShell-udvidelser til la ocal sti,for eksempel, C: UIAutomation
to) Importer modulet til PowerShell-scriptet: ( Bemærk : Når du kører denne kommando, skal du sørge for at du ikke kører PowerShell som administrator)
Import-Module C:UIAutomationUIAutomation.dll
Nu kan vi bruge kommandoerne defineret i modulet til at starte UI-automatiseringstest.
UI Automation med eksempler
Lad os begynde med en simpel Windows-formularapplikation, der dækker nogle typiske kontroller, vi muligvis ser i GUI-automatiseringstest.
I dette eksempel bliver vi bedt om at automatisere trinene til at indsende en formular med nogle grundlæggende personlige oplysninger:
Trin 1) Indtast navnet 'Anna Smith'
Trin 2) Vælg køn 'Kvinde'
Trin # 3) Vælg “Ja” som svar på, hvis du er uddannet.
Trin # 4) Klik på 'Send'
Scriptet til at gøre det er sådan:
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 sandsynligvis fortælle fra ovenstående script, hvordan det manipulerer kontrollerne i applikationen. Lad os forstå yderligere.
Tag det første skridt 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 oversigt over, hvad der sker i denne linje:
1) Skriptet finder først det øverste vindue og finder derefter dets underordnede kontrol gennem pipelinen. Det gør det, indtil det finder målkontrollen - redigeringsboksen (eller tekstboksen) med navnet 'Navn'.
to) Ved at finde kontrollen hævder den typen af kontrol, så du ved, hvilken kommando du skal bruge, f.eks. Get-UIAWindow - er et vindue og Get-UIAEdit - er et redigerings- / tekstfelt.
3) Det kræver også en eller flere egenskaber ved kontrolelementet. I dette eksempel bruger vi kun Navn som egenskab til at identificere kontrolelementet. Bemærk : AutomationId og Class er også egenskaber, der ofte bruges til at finde en kontrol.
4) Når målkontrollen er fundet, bruger vi en anden kommando til at påkalde handlingen på kontrolelementet. I dette eksempel er det Set-UIATextBoxText at indstille teksten til et tekstfelt.
Dette er den vigtigste måde for UI Automation at realisere UI-automatisering på.
java hvordan man opretter en liste
Du kan finde kommandoerne til forskellige typer kontrolelementer og kommandoen til at påkalde handlinger i hjælpedokumenterne på dens officielle side: UI-automatisering PowerShell-udvidelser
Resten af trinene ligner hinanden. Så lad os nu gå videre til andre vigtige emner.
Find forholdet mellem forælder og barn og egenskaberne ved kontrollen
Det er simpelt at skrive sådanne rørledninger, men den væsentlige del er, hvordan man finder egenskaberne og underordnede kontroller, der indeholder målkontrollen. Efter min erfaring er det de to, jeg har prøvet:
# 1) Brug UIAutomationSpy i pakken:
Der er et værktøj i den pakke, vi downloadede, der kan fange kontrolelementerne på skrivebordet. Når brugergrænsefladen er klar på skrivebordet, skal du åbne UIAutomat ionSpy.exe :
- Klik på 'Start' for at starte optagelsen.
- Flyt markøren til at styre dig, hvad du skal fange.
- Når du finder kontrollen fremhævet, og scriptet vises på vinduesgrænsefladen, betyder det, at optagelsen er vellykket.
- Klik på 'Stop' for at stoppe optagelsen.
- Klik på 'Hierarki' -fanen til venstre, og du vil se forælder-barn-forholdet mellem controllerne fra top til mål
- Klik på fanen 'Script' til højre, du kan se en komplet pipeline til kontrollen:
Bemærk, at vi ikke behøver at medtage enhver kontrol og hver ejendom fra rørledningen for at søge efter målkontrollen. Faktisk er det, vi bruger ret simpelt (se eksemplet ovenfor):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Desværre findes der ingen officiel sølvkugle på, hvor mange kontroller der skal medtages. Det kræver forsøg og erfaring.
c ++ ide med kompilator
Hvad er ikke så godt ved UIAutomationSpy:
- Det har ikke en venlig grænseflade
- Du bliver nødt til at fange den ene kontrol efter den anden og få de ønskede oplysninger.
# 2) Brug eksterne værktøjer til at inspicere kontrollerne til Windows-skrivebordet
Et foreslået værktøj er inspect.exe leveret af Microsoft. Når du åbner værktøjet, får du alle detaljer i kontrolelementerne i vinduet:
Hvad er der ikke så godt ved inspect.exe
- Der er ingen måde at eksportere detaljerne på.
- UI Automation-modulet indeholder nogle kommandoer som Get-UIAControlChildren for at få alle underordnede kontrolelementer. inspect.exe kan krydse alle kontrollerne under vinduet, men ydelsen vurderes ikke for komplekse vinduer.
Avanceret implementering: Forenkle tilgangen til at skrive scriptet
Fra ovenstående introduktion kan du muligvis se, at rørledninger er den vigtigste måde at skrive scriptet på ved hjælp af modulet, selvom rørledningerne nogle gange ikke er så lange. Der er en tilgang til at gøre det enklere og lettere, og hovedideen er at udtrække kontrolelementets data til en XML-fil og slutte sig til rørledningerne efter behov fra XML-filen.
Lad os fortsætte med ovenstående eksempel:
Generer først en XML-fil, der inkluderer egenskaberne og forholdet mellem forældre og barn for kontrollerne. Vi tilføjer noder til hver krævet kontrol: nodenavnet er unikt, så vi straks kan finde kontrollen ved navn, og kommandoen og dens egenskaber indstilles som nodernes egenskaber.
Her er XML-filen til den testformular, vi tester:
Nogle funktioner skal defineres for at slutte sig til rørledningerne ved at søge i xml-filen og udfø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 }
Indtil videre er dette næsten engangsopgaver, medmindre selve kontrollerne ændres.
Nu kan vi automatisere trinene i følgende scripts:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
På denne måde kan vi slippe af med bunker af rørledninger i scriptsne, og færdighederne forbedres meget.
Anbefalet læsning => Introduktion til Sikuli GUI Automation Tool
Konklusion:
Microsoft UIAutomation er et fantastisk bibliotek for dem, der ønsker at have UI-automatiseringstest på Windows-skrivebordet med PowerShell.
Ovenstående introduktion er kun et segment af værktøjet. Dens forenklede tilgang er inspireret af ideen om at udtrække data fra testscripts, hvilket er en god måde at forbedre vores færdigheder i at skrive automatiseringstest på. Udforsk mere om det her .
Del venligst dine kommentarer nedenfor, og vi vil meget gerne høre oplevelser fra UIAutomation-brugere.
Anbefalet læsning
- Dybdegående formørkelsesvejledninger til begyndere
- SeeTest Automation Tutorial: En mobil testautomatiseringsværktøjsvejledning
- DevOps-automatisering: Hvordan anvendes automatisering i DevOps-praksis
- Geb Tutorial - Browserautomatiseringstest ved hjælp af Geb Tool
- Hvad er automatiseringstest (ultimativ guide til start af testautomatisering)
- Selendroid-vejledning: Android Mobile Test Automation Framework (del 1)
- Katalon Studio Tutorial: Et gratis testautomatiseringsværktøj, du har ventet på
- Appium Studio for Eclipse: End-to-end Appium / Selenium-automatisering fra Eclipse