powershell uiautomation tutorial
Výukový program PowerShell UIAutomation: Automatizace uživatelského rozhraní desktopových aplikací
UIAutomation je rozšíření open source projektu PowerShell pro automatizační testy GUI. Podporuje Win32, Windows Form, WPF atd.
V tomto kurzu se zaměříme na to, jak PowerShell používá modul k implementaci automatizace uživatelského rozhraní. Abychom to vysvětlili, použijeme jako příklad aplikaci Windows Form.
Co se naučíte:
- Začínáme s Microsoft UIAutomation
- Import UIAutomation
- Automatizace uživatelského rozhraní s příklady
- Najděte vztah rodič-dítě a vlastnosti ovládacího prvku
- Pokročilá implementace: zjednodušte přístup k psaní skriptu
- Závěr:
- Doporučené čtení
Začínáme s Microsoft UIAutomation
Vzhledem k tomu, že projekt poskytuje jedinou knihovnu pro skripty PowerShell, nevyžaduje instalaci, můžeme si modul jen stáhnout a importovat do skriptu.
Přečtěte si také => 35+ nejlepších nástrojů pro testování grafického uživatelského rozhraní s úplnými podrobnostmi
Chcete-li se dozvědět více o prostředí PowerShell a pochopit, jak s ním začít, podívejte se na:
- Rozšíření PowerShell Automation UI
- Přehled automatizace uživatelského rozhraní
- Windows PowerShell
- Skvělé věci o prostředí PowerShell 5.0 ve Windows 10
Import UIAutomation
1) Stáhněte a rozbalte nejnovější balíček z jeho oficiálních webových stránek: Rozšíření PowerShell Automation UI do místní cesty,například, C: UIAutomation
dva) Importujte modul do skriptu PowerShell: ( Poznámka : Když spustíte tento příkaz, ujistěte se, že nepoužíváte PowerShell jako správce)
Import-Module C:UIAutomationUIAutomation.dll
Nyní můžeme pomocí příkazů definovaných v modulu zahájit testování automatizace uživatelského rozhraní.
Automatizace uživatelského rozhraní s příklady
Začněme s jednoduchou aplikací formuláře Windows, která pokrývá některé typické ovládací prvky, které můžeme vidět v automatizovaném testování grafického uživatelského rozhraní.
V tomto příkladu nám bylo řečeno, abychom automatizovali kroky k odeslání formuláře s některými základními osobními údaji:
Krok 1) Zadejte název „Anna Smith“
Krok 2) Vyberte pohlaví „Žena“
Krok č. 3) Vyberte „Ano“ jako odpověď, pokud jste absolvovali.
Krok č. 4) Klikněte na „Odeslat“
Skript k tomu je takový:
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'|
Z výše uvedeného skriptu pravděpodobně poznáte, jak manipuluje s ovládacími prvky v aplikaci. Pojďme to pochopit dále.
Vezměte první krok jako příklad:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Zde je rozpis toho, co se děje v tomto řádku:
1) Skript nejprve najde horní okno a poté najde svůj podřízený ovládací prvek prostřednictvím kanálu. Dělá to, dokud nenajde cílový ovládací prvek - editační pole (nebo textové pole) se jménem „Jméno“.
dva) Při hledání ovládacího prvku si nárokuje typ ovládacího prvku, abyste věděli, jaký příkaz použít, např. Get-UIAWindow - je okno a Get-UIAEdit - je editační / textové pole.
3) Vyžaduje také jednu nebo více vlastností ovládacího prvku. V tomto příkladu používáme pouze Name jako vlastnost k identifikaci ovládacího prvku. Poznámka : AutomationId a Class jsou také vlastnosti, které se běžně používají při hledání ovládacího prvku.
4) Po nalezení cílového ovládacího prvku použijeme další příkaz k vyvolání akce na ovládacím prvku. V tomto příkladu je Set-UIATextBoxText k nastavení textu pro textové pole.
Toto je hlavní způsob, jak automatizace uživatelského rozhraní realizovat automatizaci uživatelského rozhraní.
automatizace testování rozhovor otázky a odpovědi pdf
Příkazy pro různé typy ovládacích prvků a příkaz k vyvolání akcí najdete v dokumentech nápovědy jeho oficiálního webu: Rozšíření PowerShell Automation UI
Ostatní kroky jsou si podobné. Pojďme tedy nyní k dalším důležitým tématům.
Najděte vztah rodič-dítě a vlastnosti ovládacího prvku
Je snadné psát takové kanály, ale důležitou součástí je, jak najít vlastnosti a podřízené ovládací prvky obsahující cílový ovládací prvek. Podle mých zkušeností jsou to dva, které jsem zkoušel:
rozdíl mezi testovacím případem a testovacím plánem
# 1) Použijte UIAutomationSpy v balíčku:
V balíčku, který jsme stáhli, je nástroj, který dokáže zachytit ovládací prvky na ploše. Když je uživatelské rozhraní připraveno na ploše, otevřete UIAutomat ionSpy.exe :
- Kliknutím na „Start“ spusťte snímání.
- Přesuňte kurzor na ovládací prvek, který chcete zachytit.
- Když najdete zvýrazněný ovládací prvek a skript zobrazený na rozhraní jeho okna, znamená to, že zachycení bylo úspěšné.
- Kliknutím na „Stop“ zastavíte záznam.
- Klikněte vlevo na kartu „Hierarchie“ a uvidíte vztah rodič-dítě kontrolerů shora dolů k cíli
- Klikněte na záložku „Skript“ vpravo, zobrazí se celý kanál pro ovládací prvek:
Upozorňujeme, že k vyhledání cílového ovládacího prvku nemusíme zahrnout všechny ovládací prvky a všechny vlastnosti z kanálu. Ve skutečnosti je to, co používáme, poměrně jednoduché (viz výše uvedený příklad):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Bohužel neexistuje žádná oficiální stříbrná kulka o tom, kolik kontrol by mělo být zahrnuto. Vyžaduje to zkoušení a zkušenosti.
Co na UIAutomationSpy není tak skvělé:
- Nemá přátelské rozhraní
- Budete muset zachytit jeden ovládací prvek za druhým a získat požadované podrobnosti.
# 2) Pomocí externích nástrojů zkontrolujte ovládací prvky na ploše systému Windows
Navrhovaným nástrojem je inspect.exe poskytovaný společností Microsoft. Po otevření nástroje se v okně zobrazí všechny podrobnosti o ovládacích prvcích:
Co na inspect.exe není tak skvělé
- Podrobnosti nelze exportovat.
- Modul automatizace uživatelského rozhraní poskytuje některé příkazy, například Get-UIAControlChildren, aby získal všechny podřízené ovládací prvky. inspect.exe může transverzovat všechny ovládací prvky pod oknem, ale výkon se u složitých oken neposuzuje.
Pokročilá implementace: zjednodušte přístup k psaní skriptu
Z výše uvedeného úvodu můžete vidět, že potrubí jsou hlavním způsobem psaní skriptu pomocí modulu, i když někdy kanály nejsou tak dlouhé. Existuje způsob, jak to zjednodušit a usnadnit, a hlavní myšlenkou je extrahovat data ovládacích prvků do souboru XML a v případě potřeby se připojit k potrubí ze souboru XML.
Pokračujme výše uvedeným příkladem:
Nejprve vygenerujte soubor XML, který obsahuje vlastnosti a vztah rodič - dítě ovládacích prvků. Přidáváme uzly pro každý požadovaný ovládací prvek: název uzlu je jedinečný, takže můžeme okamžitě najít ovládací prvek podle názvu, a příkaz a jeho vlastnosti jsou nastaveny jako vlastnosti uzlů.
Zde je soubor XML pro testovací formulář, který testujeme:
Některé funkce by měly být definovány pro připojení k potrubí prohledáním souboru XML a jejich spuštěním:
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 }
Zatím se jedná o téměř jednorázové úkoly, pokud se samotné ovládací prvky nezmění.
Nyní můžeme automatizovat kroky v následujících skriptech:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
Tímto způsobem se můžeme ve skriptech zbavit svazků potrubí a odbornost se výrazně zlepší.
Doporučené čtení => Úvod do automatizačního nástroje Sikuli GUI
Závěr:
Microsoft UIAutomation je skvělá knihovna pro ty, kteří chtějí mít testy automatizace uživatelského rozhraní na ploše Windows s PowerShell.
Výše uvedený úvod je pouze segmentem nástroje. Jeho zjednodušený přístup je inspirován myšlenkou extrahování dat z testovacích skriptů, což je dobrý způsob, jak zlepšit naši odbornost v psaní automatizačních testů. Prozkoumejte o tom více tady .
Sdílejte prosím své komentáře níže a rádi bychom slyšeli zkušenosti uživatelů UIAutomation.
Doporučené čtení
- Výukové programy pro zatmění do hloubky pro začátečníky
- Výukový program pro automatizaci SeeTest: Průvodce nástrojem pro automatizaci mobilních testů
- DevOps Automation: How is Automation Applied in DevOps Practice
- Výukový program Geb - Testování automatizace prohlížeče pomocí nástroje Geb
- Co je to Automation Testing (Ultimate Guide to Start Test Automation)
- Výukový program Selendroid: Rámec automatizace mobilních testů pro Android (část 1)
- Výukový program Katalon Studio: Bezplatný nástroj pro automatizaci testů, na který jste čekali
- Appium Studio pro Eclipse: Kompletní automatizace Appium / Selenium od Eclipse