powershell uiautomation tutorial
PowerShell UIAutomation Tutorial: UI Automation of Desktop Applications
UIAutomation är ett öppen källkodsprojekt PowerShell-tillägg för GUI-automatiseringstester. Den stöder Win32, Windows Form, WPF och så vidare.
I denna handledning fokuserar vi på hur PowerShell använder modulen för att implementera UI-automatisering. För att förklara detta använder vi Windows Form-applikationen som ett exempel.
Vad du kommer att lära dig:
- Komma igång med Microsoft UIAutomation
- Importera UIAutomation
- UI Automation med exempel
- Hitta förhållandet mellan förälder och barn och egenskaperna hos kontrollen
- Avancerad implementering: förenkla metoden för att skriva manuset
- Slutsats:
- Rekommenderad läsning
Komma igång med Microsoft UIAutomation
Eftersom projektet tillhandahåller det enda biblioteket för PowerShell-skript behöver det inte installeras, vi kan bara ladda ner modulen och importera den till skriptet.
Läs också => 35+ bästa GUI-testverktyg med fullständiga detaljer
Om du vill veta mer om PowerShell och förstå hur du kommer igång med det, kolla in:
- UI Automation PowerShell-tillägg
- UI Automation Översikt
- Windows PowerShell
- Coola saker om PowerShell 5.0 i Windows 10
Importera UIAutomation
1) Ladda ner och packa upp det senaste paketet från dess officiella webbplats: UI Automation PowerShell-tillägg till la ocal path,till exempel, C: UIAutomation
två) Importera modulen till PowerShell-skriptet: ( Notera : När du kör det här kommandot, se till att du inte kör PowerShell som administratör)
Import-Module C:UIAutomationUIAutomation.dll
Nu kan vi använda kommandona som definierats i modulen för att starta UI-automatiseringstestning.
UI Automation med exempel
Låt oss börja med ett enkelt Windows-formulärprogram som täcker några typiska kontroller som vi kan se i GUI-automatiseringstestning.
I det här exemplet får vi veta att automatisera stegen för att skicka ett formulär med grundläggande personlig information:
Steg 1) Ange namnet 'Anna Smith'
Steg 2) Välj kön 'Kvinna'
Steg 3) Välj ”Ja” som svar på om du har examen.
Steg 4) Klicka på 'Skicka'
Skriptet för att göra det är så här:
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 antagligen berätta från ovanstående skript, hur det manipulerar kontrollerna i applikationen. Låt oss förstå vidare.
Ta det första steget som ett exempel:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Här är en sammanfattning av vad som händer på den här raden:
1) Skriptet hittar först det övre fönstret och hittar sedan dess underkontroll genom pipelinen. Det gör det tills det hittar målkontrollen - redigeringsrutan (eller textrutan) med namnet 'Namn'.
två) När du hittar kontrollen hävdar den typen av kontroll så att du vet vilket kommando du ska använda, t.ex. Get-UIAWindow - är ett fönster och Get-UIAEdit - är en redigerings- / textruta.
3) Det kräver också en eller flera egenskaper hos kontrollen. I det här exemplet använder vi bara Namn som egenskap för att identifiera kontrollen. Notera : AutomationId och Class är också egenskaper som ofta används när man hittar en kontroll.
4) När målkontrollen har hittats använder vi ett annat kommando för att åberopa åtgärden på kontrollen. I det här exemplet är det Set-UIATextBoxText att ställa in texten för en textruta.
Detta är det viktigaste sättet för UI Automation att förverkliga UI-automatisering.
verktyg som används i stor dataanalys
Du hittar kommandona för olika typer av kontroller och kommandot för att åberopa åtgärder i hjälpdokumenten på dess officiella webbplats: UI Automation PowerShell-tillägg
Resten av stegen är likadana. Så, låt oss nu gå vidare till andra viktiga ämnen.
Hitta förhållandet mellan förälder och barn och egenskaperna hos kontrollen
Det är enkelt att skriva sådana rörledningar, men den viktiga delen är hur man hittar egenskaperna och barnkontrollerna som innehåller målkontrollen. Enligt min erfarenhet är det de två jag har provat:
# 1) Använd UIAutomationSpy i paketet:
Det finns ett verktyg i paketet som vi laddade ner som kan fånga kontrollerna på skrivbordet. När gränssnittet är klart på skrivbordet öppnar du UIAutomat ionSpy.exe :
- Klicka på 'Start' för att starta inspelningen.
- Flytta markören för att styra dig vad du ska fånga.
- När du hittar kontrollen markerad och skriptet visas i dess fönstergränssnitt betyder det att inspelningen är framgångsrik.
- Klicka på 'Stopp' för att stoppa fångsten.
- Klicka på fliken 'Hierarki' till vänster så ser du föräldrar-barn-förhållandet mellan styrenheterna från toppen till målet
- Klicka på fliken 'Skript' till höger, du kan se en fullständig pipeline för kontrollen:
Observera att vi inte behöver inkludera alla kontroller och alla fastigheter från rörledningen för att söka efter målkontrollen. Egentligen är det vi använder ganska enkelt (se exemplet ovan):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Tyvärr finns det ingen officiell silverkula om hur många kontroller som ska inkluderas. Det kräver försök och erfarenhet.
Vad är inte så bra med UIAutomationSpy:
- Det har inte ett vänligt gränssnitt
- Du måste fånga den ena kontrollen efter den andra och få de uppgifter du vill ha.
# 2) Använd externa verktyg för att inspektera kontrollerna för Windows-skrivbordet
Ett föreslaget verktyg är inspect.exe från Microsoft. När du öppnar verktyget får du alla detaljer i kontrollerna i fönstret:
Vad är inte så bra med inspect.exe
- Det finns inget sätt att exportera detaljerna.
- UI Automation-modulen innehåller några kommandon som Get-UIAControlChildren för att få alla barnkontroller. inspect.exe kan korsa alla kontroller under fönstret, men prestandan bedöms inte för komplexa fönster.
Avancerad implementering: förenkla metoden för att skriva manuset
Från ovanstående introduktion kan du se att pipelines är det viktigaste sättet att skriva manuset med hjälp av modulen, även om pipelines ibland inte är så långa. Det finns ett tillvägagångssätt för att göra det enklare och enklare, och huvudidén är att extrahera data från kontrollerna till en XML-fil och gå med i rörledningarna vid behov från XML-filen.
Låt oss fortsätta med exemplet ovan:
Generera först en XML-fil inklusive egenskaperna och förhållandet mellan föräldrar och barn för kontrollerna. Vi lägger till noder för varje kontroll som krävs: nodnamnet är unikt så att vi kan hitta kontrollen direkt efter namn och kommandot och dess egenskaper ställs in som nodernas egenskaper.
Här är XML-filen för testformuläret vi testar:
Vissa funktioner bör definieras för att gå med i rörledningarna genom att söka i xml-filen och utföra 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 }
Hittills är detta nästan engångsuppgifter om inte själva kontrollerna ändras.
Nu kan vi automatisera stegen i följande skript:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
På det här sättet kan vi bli av med massor av rörledningar i manusen, och skickligheten kommer att förbättras kraftigt.
Rekommenderad läsning => Introduktion till Sikuli GUI Automation Tool
Slutsats:
Microsoft UIAutomation är ett utmärkt bibliotek för dem som vill ha UI-automatiseringstester på Windows-skrivbordet med PowerShell.
Ovanstående introduktion är bara ett segment av verktyget. Dess förenklade tillvägagångssätt är inspirerad av idén att extrahera data från testskript, vilket är ett bra sätt att förbättra vår skicklighet i att skriva automatiseringstester. Utforska mer om det här .
vad är den bästa virtual reality-appen
Dela dina kommentarer nedan så vi skulle gärna höra erfarenheter från UIAutomation-användare.
Rekommenderad läsning
- Fördjupade förmörkningsövningar för nybörjare
- SeeTest Automation Tutorial: A Mobile Test Automation Tool Guide
- DevOps Automation: Hur används automatisering i DevOps Practice
- Geb Tutorial - Browser Automation Testing med hjälp av Geb Tool
- Vad är Automation Testing (Ultimate Guide to Start Test Automation)
- Selendroid-handledning: Android Mobile Test Automation Framework (del 1)
- Katalon Studio-handledning: Ett gratis testautomatiseringsverktyg du har väntat på
- Appium Studio for Eclipse: End-to-end Appium / Selenium Automation From Eclipse