powershell uiautomation tutorial
Vodič za PowerShell UIAutomation: Automatizacija korisničkog sučelja za radne površine
UIAutomation je projekt otvorenog koda PowerShell proširenje za testove automatizacije GUI-a. Podržava Win32, Windows obrazac, WPF i tako dalje.
U ovom uputstvu usredotočit ćemo se na to kako PowerShell koristi modul za implementaciju automatizacije korisničkog sučelja. Da bismo to objasnili, za primjer ćemo upotrijebiti aplikaciju Windows obrazac.
Što ćete naučiti:
- Početak rada s Microsoft UIAutomation
- Uvoz UIAutomation
- UI automatizacija s primjerima
- Pronađite odnos roditelja i djeteta i svojstva kontrole
- Napredna implementacija: pojednostaviti pristup pisanju skripte
- Zaključak:
- Preporučena literatura
Početak rada s Microsoft UIAutomation
Budući da projekt pruža jedinu knjižnicu za PowerShell skripte, ne zahtijeva instalaciju, možemo samo preuzeti modul i uvesti ga u skriptu.
Također pročitajte => 35+ najboljih alata za testiranje grafičkog sučelja s potpunim detaljima
Da biste saznali više o PowerShell-u i kako biste započeli s radom, pogledajte:
- Proširenja PowerShell za automatizaciju korisničkog sučelja
- Pregled automatizacije korisničkog sučelja
- Windows PowerShell
- Cool Stuff o PowerShell 5.0 u sustavu Windows 10
Uvoz UIAutomation
1) Preuzmite i raspakirajte najnoviji paket sa njegove službene web stranice: Proširenja PowerShell za automatizaciju korisničkog sučelja do okalne staze,na primjer, C: UIAutomatizacija
2) Uvezite modul u PowerShell skriptu: ( Bilješka : Kada pokrenete ovu naredbu, provjerite ne koristite li PowerShell kao administrator)
Import-Module C:UIAutomationUIAutomation.dll
Sada možemo koristiti naredbe definirane u modulu za započinjanje testiranja automatizacije korisničkog sučelja.
UI automatizacija s primjerima
Počnimo s jednostavnom aplikacijom za obrazac sustava Windows, koja pokriva neke tipične kontrole koje možemo vidjeti u testiranju automatizacije GUI-ja.
U ovom primjeru rečeno nam je da automatiziramo korake za predaju obrasca s nekim osnovnim osobnim podacima:
Korak 1) Unesite ime 'Anna Smith'
Korak 2) Odaberite spol 'Žensko'
Korak # 3) Odaberite 'Da' kao odgovor ako ste diplomirali.
Korak # 4) Kliknite 'Pošalji'
Skripta za to je sljedeća:
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'|
Iz gornje skripte vjerojatno možete zaključiti kako manipulira kontrolama u aplikaciji. Razumijemo dalje.
Uzmimo prvi korak kao primjer:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Evo raščlambe o onome što se događa u ovom retku:
1) Skripta prvo pronalazi gornji prozor, a zatim pronalazi svoju podređenu kontrolu kroz cjevovod. To čini dok ne pronađe ciljnu kontrolu - okvir za uređivanje (ili okvir za tekst) s imenom 'Ime'.
2) Nakon pronalaska kontrole, tvrdi za tip kontrole kako biste znali koju naredbu koristiti, npr. Get-UIAWindow - je prozor, a Get-UIAEdit - okvir za uređivanje / tekst.
3) Također zahtijeva jedno ili više svojstava kontrole. U ovom primjeru koristimo samo Name kao svojstvo za identifikaciju kontrole. Bilješka : AutomationId i Class također su svojstva koja se obično koriste prilikom pronalaska kontrole.
4) Nakon što se pronađe ciljna kontrola, koristimo drugu naredbu za pozivanje radnje na kontroli. U ovom je primjeru Set-UIATextBoxText za postavljanje teksta za tekstni okvir.
Ovo je glavni način za automatizaciju korisničkog sučelja da ostvari automatizaciju korisničkog sučelja.
koja je razlika između prosljeđivanja i okidanja porta
Naredbe za različite vrste kontrola i naredbu za pozivanje radnji možete pronaći u dokumentima pomoći službenog web mjesta: Proširenja PowerShell za automatizaciju korisničkog sučelja
Ostatak koraka sličan je venu. Krenimo sada na druge važne teme.
Pronađite odnos roditelja i djeteta i svojstva kontrole
Jednostavno je napisati takve cjevovode, ali važan dio je kako pronaći svojstva i podređene kontrole koje sadrže ciljanu kontrolu. Prema mom iskustvu, ovo su dvije koje sam isprobao:
# 1) Upotrebite UIAutomationSpy u paketu:
U paketu koji smo preuzeli nalazi se alat koji može zabilježiti kontrole na radnoj površini. Kada je korisničko sučelje spremno na radnoj površini, otvorite UIAutomat ionSpy.exe :
- Kliknite 'Start' da biste započeli snimanje.
- Pomaknite kursor do kontrole koju ćete snimiti.
- Kad pronađete kontrolu istaknutu i skriptu prikazanu na njezinom sučelju prozora, to znači da je hvatanje uspješno.
- Kliknite “Stop” da zaustavite snimanje.
- Kliknite karticu “Hijerarhija” slijeva i vidjet ćete odnos roditelja i djeteta kontrolora od vrha do cilja
- Kliknite karticu “Script” s desne strane, možete vidjeti cijeli cjevovod za kontrolu:
Imajte na umu da ne moramo uključiti svaku kontrolu i svako svojstvo iz cjevovoda da bismo tražili ciljanu kontrolu. Zapravo, ono što koristimo prilično je jednostavno (vidi gornji primjer):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Nažalost, ne postoji službeni srebrni metak o tome koliko kontrola treba biti uključeno. To zahtijeva pokušaj i iskustvo.
Što nije tako sjajno u vezi s UIAutomationSpy:
- Nema prijateljsko sučelje
- Morat ćete hvatati jednu kontrolu za drugom i dobiti željene detalje.
# 2) Pomoću vanjskih alata pregledajte kontrole za radnu površinu sustava Windows
Predloženi alat je inspect.exe koji nudi Microsoft. Kad otvorite alat, na prozoru ćete dobiti sve pojedinosti kontrola:
Što nije baš sjajno kod inspect.exe
- Ne postoji način za izvoz detalja.
- Modul UI Automation pruža neke naredbe kao što je Get-UIAControlChildren za dobivanje svih podređenih kontrola. inspect.exe može poprečno pokriti sve kontrole ispod prozora, ali izvedba se ne procjenjuje za složene prozore.
Napredna implementacija: pojednostaviti pristup pisanju skripte
Iz gornjeg uvoda možete vidjeti da su cjevovodi glavni način pisanja skripte pomoću modula, iako cjevovodi ponekad nisu tako dugi. Postoji pristup koji će to učiniti jednostavnijim i lakšim, a glavna ideja je izvući podatke kontrola u XML datoteku i po potrebi spojiti cjevovode iz XML datoteke.
Nastavimo s gornjim primjerom:
Prvo generirajte XML datoteku koja uključuje svojstva i odnos roditelja i djeteta kontrola. Čvorove dodajemo za svaku potrebnu kontrolu: ime čvora je jedinstveno tako da kontrolu možemo pronaći odmah po imenu, a naredba i njena svojstva postavljaju se kao svojstva čvorova.
Evo XML datoteke za testni obrazac koji testiramo:
kako mogu otvoriti apk datoteku
Neke funkcije treba definirati za spajanje cjevovoda pretraživanjem xml datoteke i njihovim izvršavanjem:
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 }
Do sada su to gotovo jednokratni zadaci, osim ako se ne promijene same kontrole.
Sada možemo automatizirati korake u sljedećim skriptama:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
Na taj se način možemo riješiti gomile cjevovoda u skriptama, a vještina će se znatno poboljšati.
Preporučeno čitanje => Uvod u Sikuli GUI alat za automatizaciju
Zaključak:
Microsoft UIAutomation izvrsna je knjižnica za one koji žele testirati automatizaciju korisničkog sučelja na radnoj površini Windowsa s PowerShell-om.
Gornji uvod je samo segment alata. Njegov pojednostavljeni pristup nadahnut je idejom izdvajanja podataka iz skripti za testiranje, što je dobar način da poboljšamo svoju sposobnost pisanja testova automatizacije. Istražite više o tome ovdje .
Podijelite svoje komentare u nastavku i voljeli bismo čuti iskustva korisnika UIAutomation-a.
Preporučena literatura
- Dubinski vodiči za pomračenje za početnike
- Vodič za automatizaciju SeeTesta: Vodič za alat za automatizaciju mobilnih testova
- DevOps automatizacija: Kako se automatizacija primjenjuje u praksi DevOps
- Geb vodič - Ispitivanje automatizacije preglednika pomoću alata Geb
- Što je ispitivanje automatizacije (konačni vodič za pokretanje automatizacije ispitivanja)
- Vodič za Selendroid: Okvir za automatizaciju Android mobilnih testova (1. dio)
- Vodič za Katalon Studio: Besplatni alat za automatizaciju testa koji ste čekali
- Appium Studio za Eclipse: Automatska automatizacija Appium / Selenium iz Eclipsea