powershell uiautomation tutorial
PowerShell UIAutomation Tutorial: automatització de la interfície d'usuari d'aplicacions d'escriptori
UIAutomation és una extensió de PowerShell de codi obert per a proves d’automatització de la GUI. És compatible amb Win32, Windows Form, WPF, etc.
En aquest tutorial, ens centrarem en com PowerShell utilitza el mòdul per implementar l'automatització de la interfície d'usuari. Per explicar-ho utilitzarem l'aplicació Windows Form com a exemple.
Què aprendreu:
- Introducció a Microsoft UIAutomation
- Importa UIAutomation
- Automatització de la IU amb exemples
- Cerqueu la relació pare-fill i les propietats del control
- Implementació avançada: simplifiqueu l'enfocament per escriure el guió
- Conclusió:
- Lectura recomanada
Introducció a Microsoft UIAutomation
Com que el projecte proporciona l'única biblioteca per als scripts de PowerShell, no requereix instal·lació, només podem descarregar el mòdul i importar-lo a l'script.
Llegiu també => Més de 35 millors eines de prova GUI amb detalls complets
Per obtenir més informació sobre PowerShell i entendre com començar a utilitzar-lo, consulteu:
- Extensions PowerShell d’automatització d’interfície d’usuari
- Descripció general de l'automatització de la interfície d'usuari
- Windows PowerShell
- Coses interessants sobre PowerShell 5.0 a Windows 10
Importa UIAutomation
1) Descarregueu i descomprimiu el darrer paquet del seu lloc web oficial: Extensions PowerShell d’automatització d’interfície d’usuari al camí ocal,per exemple, C: UIAutomation
2) Importeu el mòdul a l'script PowerShell: ( Nota : Quan executeu aquesta ordre, assegureu-vos que no executeu PowerShell com a administrador).
Import-Module C:UIAutomationUIAutomation.dll
Ara podem utilitzar les ordres definides al mòdul per iniciar les proves d'automatització de la interfície d'usuari.
Automatització de la IU amb exemples
Comencem amb una senzilla aplicació de formulari de Windows, que cobreix alguns controls típics que podem veure a les proves d’automatització de la GUI.
En aquest exemple, se’ns demana que automatitzem els passos per enviar un formulari amb informació personal bàsica:
Pas 1) Introduïu el nom 'Anna Smith'
Pas 2) Selecciona el gènere 'Dona'
Pas 3) Trieu 'Sí' com a resposta si es gradua.
Pas 4) Feu clic a 'Envia'
El guió per fer-ho és així:
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'|
Probablement, a partir de l'script anterior, es pot saber com manipula els controls de l'aplicació. Anem a entendre més.
Preneu el primer pas com a exemple:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith'
Aquí teniu un desglossament del que passa en aquesta línia:
1) El script troba primer la finestra superior i després troba el control secundari a través de la canonada. Ho fa fins que troba el control de destinació: el quadre d'edició (o quadre de text) amb el nom 'Nom'.
2) En trobar el control, reclama el tipus de control perquè sàpiga quina ordre s’ha d’utilitzar, per exemple. Get-UIAWindow - és una finestra i Get-UIAEdit - és un quadre d'edició / text.
3) També requereix una o més propietats del control. En aquest exemple, només fem servir Nom com a propietat per identificar el control. Nota : AutomationId i Class també són propietats que s’utilitzen habitualment a l’hora de trobar un control.
4) Després de trobar el control de destinació, fem servir una altra ordre per invocar l'acció al control. En aquest exemple, és Set-UIATextBoxText establir el text per a un quadre de text.
Aquesta és la forma principal d’automatització de la interfície d’usuari per realitzar l’automatització de la interfície d’usuari.
quin dispositiu realitza la traducció d'adreces de xarxa (nat)?
Podeu trobar les ordres de diferents tipus de controls i l'ordre per invocar accions als documents d'ajuda del seu lloc oficial: Extensions PowerShell d’automatització d’interfície d’usuari
La resta de passos són semblants en vena. Passem, doncs, a altres temes importants.
Cerqueu la relació pare-fill i les propietats del control
És senzill escriure aquestes canonades, però la part significativa és com trobar les propietats i els controls secundaris que contenen el control objectiu. Segons la meva experiència, aquests són els dos que he provat:
# 1) Utilitzeu UIAutomationSpy al paquet:
Al paquet que hem descarregat hi ha una eina que permet capturar els controls a l’escriptori. Quan la IU estigui preparada a l'escriptori, obriu UIAutomat ionSpy.exe :
- Feu clic a 'Inici' per iniciar la captura.
- Mou el cursor cap al control de què vols capturar.
- Quan trobeu el control ressaltat i l'script mostrat a la interfície de la finestra, significa que la captura és correcta.
- Feu clic a 'Atura' per aturar la captura.
- Feu clic a la pestanya 'Jerarquia' de l'esquerra i veureu la relació pare-fill dels controladors des de dalt fins a l'objectiu
- Feu clic a la pestanya 'Script' a la dreta per veure un canal complet per al control:
Tingueu en compte que no hem d’incloure tots els controls i propietats de la canonada per cercar el control objectiu. En realitat, el que fem servir és bastant senzill (vegeu l'exemple anterior):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'
Malauradament, no existeix cap bala de plata oficial sobre quants controls s’haurien d’incloure. Requereix provar i experimentar.
El que no és tan bo en UIAutomationSpy:
- No té una interfície amigable
- Haureu de captar un control darrere l’altre i obtenir els detalls que desitgeu.
# 2) Utilitzeu eines externes per inspeccionar els controls de l'escriptori de Windows
Una eina suggerida és inspect.exe proporcionada per Microsoft. Quan obriu l'eina, obtindreu tots els detalls dels controls de la finestra:
El que no és tan fantàstic a inspect.exe
- No hi ha manera d’exportar els detalls.
- El mòdul UI Automation proporciona algunes ordres com Get-UIAControlChildren per obtenir tots els controls secundaris. inspect.exe pot transversalitzar tots els controls sota la finestra, però el rendiment no es valora per a finestres complexes.
Implementació avançada: simplifiqueu l'enfocament per escriure el guió
A partir de la introducció anterior, podeu veure que les canonades són la forma principal d'escriure l'script mitjançant el mòdul, tot i que de vegades les canalitzacions no són tan llargues. Hi ha un enfocament per fer-lo més senzill i fàcil, i la idea principal és extreure les dades dels controls a un fitxer XML i unir-se a les canonades quan sigui necessari del fitxer XML.
Continuem amb l'exemple anterior:
En primer lloc, genereu un fitxer XML que inclogui les propietats i la relació pare-fill dels controls. Afegim nodes per a tots els controls necessaris: el nom del node és únic, de manera que podem trobar el control immediatament per nom i l'ordre i les seves propietats s'estableixen com a propietats dels nodes.
Aquí teniu el fitxer XML del formulari de prova que provem:
Cal definir algunes funcions per unir-se a les canonades cercant al fitxer XML i executant-les:
optimitzador de sistema gratuït per a Windows 7
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 }
Fins ara, són gairebé tasques puntuals tret que canviïn els propis controls.
Ara podem automatitzar els passos dels scripts següents:
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit'
D’aquesta manera, podem desfer-nos dels grups de canonades dels scripts, i la competència es millorarà molt.
Lectura recomanada => Introducció a Sikuli GUI Automation Tool
Conclusió:
Microsoft UIAutomation és una biblioteca fantàstica per a aquells que vulguin fer proves d'automatització de la interfície d'usuari a l'escriptori de Windows amb PowerShell.
La introducció anterior és només un segment de l'eina. El seu enfocament simplificat s’inspira en la idea d’extreure dades dels scripts de prova, que és una bona manera de millorar el nostre domini a l’hora d’escriure proves d’automatització. Exploreu-ne més informació aquí .
Comparteix els teus comentaris a continuació i ens encantaria conèixer experiències dels usuaris d’UIAutomation.
Lectura recomanada
- Tutorials Eclipse en profunditat per a principiants
- SeeTest Automation Tutorial: A Mobile Test Automation Tool Guide
- DevOps Automation: Com s'aplica l'automatització a DevOps Practice
- Tutorial Geb: proves d'automatització del navegador mitjançant l'eina Geb
- Què és la prova d'automatització (última guia per iniciar l'automatització de proves)
- Tutorial Selendroid: Marc per a l'automatització de proves per a mòbils d'Android (primera part)
- Tutorial Katalon Studio: una eina gratuïta d'automatització de proves que heu estat esperant
- Appium Studio per a Eclipse: automatització completa de Appium / Selenium des d’Eclipse