powershell uiautomation tutorial
PowerShell UIAutomation Tutorial: UI Automation de Desktop Applications
UIAutomation é uma extensão do PowerShell de projeto de código aberto para testes de automação de GUI. Ele suporta Win32, Windows Form, WPF e assim por diante.
Neste tutorial, vamos nos concentrar em como o PowerShell usa o módulo para implementar a automação da IU. Para explicar isso, usaremos o aplicativo Windows Form como exemplo.
O que você aprenderá:
- Introdução ao Microsoft UIAutomation
- Importar UIAutomation
- Automação da IU com exemplos
- Encontre a relação pai-filho e as propriedades do controle
- Implementação avançada: simplifica a abordagem para escrever o script
- Conclusão:
- Leitura recomendada
Introdução ao Microsoft UIAutomation
Como o projeto fornece a única biblioteca para os scripts do PowerShell, ele não requer instalação, podemos apenas baixar o módulo e importá-lo para o script.
Leia também => 35+ melhores ferramentas de teste de GUI com detalhes completos
Para saber mais sobre o PowerShell e entender como começar a usá-lo, confira:
- Extensões UI Automation PowerShell
- Visão geral da automação da interface do usuário
- Windows PowerShell
- Coisas legais sobre o PowerShell 5.0 no Windows 10
Importar UIAutomation
1) Baixe e descompacte o pacote mais recente de seu site oficial: Extensões UI Automation PowerShell para o caminho ocal,por exemplo, C: UIAutomation
dois) Importe o módulo para o script PowerShell: ( Observação : Ao executar este comando, certifique-se de não estar executando o PowerShell como administrador)
Import-Module C:UIAutomationUIAutomation.dll Agora podemos usar os comandos definidos no módulo para iniciar o teste de automação da IU.
Automação da IU com exemplos
Vamos começar com um aplicativo simples de formulário do Windows, que cobre alguns controles típicos que podemos ver em testes de automação de GUI.

Neste exemplo, somos instruídos a automatizar as etapas para enviar um formulário com algumas informações pessoais básicas:
Passo 1) Insira o nome “Anna Smith”
Passo 2) Selecione o gênero “Feminino”
Etapa 3) Escolha “Sim” como a resposta de se for graduado.
Passo 4) Clique em “Enviar”
O script para fazer isso é assim:
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'| Você provavelmente pode dizer a partir do script acima, como ele está manipulando os controles no aplicativo. Deixe-nos entender melhor.
Dê o primeiro passo como exemplo:
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name'|Set-UIATextBoxText 'Anna Smith' Aqui está uma análise do que está acontecendo nesta linha:
1) O script primeiro encontra a janela superior e, em seguida, encontra seu controle filho por meio do pipeline. Ele faz isso até encontrar o controle de destino - a caixa de edição (ou caixa de texto) com o nome “Nome”.
dois) Ao encontrar o controle, ele reivindica o tipo de controle para que você saiba qual comando usar, por ex. Get-UIAWindow - é uma janela e Get-UIAEdit - é uma caixa de edição / texto.
3) Também requer uma ou mais propriedades do controle. Neste exemplo, usamos apenas Name como a propriedade para identificar o controle. Observação : AutomationId e Class também são propriedades comumente usadas ao localizar um controle.
4) Depois que o controle de destino é encontrado, usamos outro comando para invocar a ação no controle. Neste exemplo, é Set-UIATextBoxText para definir o texto para uma caixa de texto.
Esta é a principal maneira de a UI Automation realizar a automação da UI.
Qual das opções a seguir fornece um programa remoto que se parece com um aplicativo local?
Você pode encontrar os comandos para diferentes tipos de controles e o comando para invocar ações nos documentos de ajuda de seu site oficial: Extensões UI Automation PowerShell
O resto das etapas são semelhantes em veia. Portanto, vamos agora passar para outros tópicos importantes.
Encontre a relação pai-filho e as propriedades do controle
É simples escrever tais pipelines, mas a parte significativa é como encontrar as propriedades e os controles filhos que contêm o controle de destino. Na minha experiência, estes são os dois que tentei:
# 1) Use UIAutomationSpy no pacote:
Há uma ferramenta no pacote que baixamos que pode capturar os controles da área de trabalho. Quando a IU estiver pronta na área de trabalho, abra o UIAutomat ionSpy.exe :

- Clique em “Iniciar” para iniciar a captura.
- Mova o cursor para o controle sobre o que capturar.
- Quando você encontrar o controle realçado e o script exibido na interface da janela, significa que a captura foi bem-sucedida.
- Clique em “Parar” para parar a captura.
- Clique na guia “Hierarquia” à esquerda e você verá a relação pai-filho dos controladores de cima para o alvo

- Clique na guia “Script” à direita, você pode ver um pipeline completo para o controle:

Observe que não precisamos incluir todos os controles e todas as propriedades do pipeline para procurar o controle de destino. Na verdade, o que usamos é bastante simples (veja o exemplo acima):
Get-UIAWindow -Name 'Test Form' | Get-UIATabItem -Name 'BasicInfo'| Get-UIAEdit -AutomationId 'textBox1' -Name 'Name' Infelizmente, não existe uma fórmula mágica oficial sobre quantos controles devem ser incluídos. Requer tentativa e experiência.
O que não é tão bom sobre UIAutomationSpy:
- Não possui uma interface amigável
- Você terá que capturar um controle após o outro e obter os detalhes que deseja.
# 2) Use ferramentas externas para inspecionar os controles da área de trabalho do Windows
Uma ferramenta sugerida é inspect.exe, fornecida pela Microsoft. Ao abrir a ferramenta, você obterá todos os detalhes dos controles da janela:

O que não é tão bom em inspect.exe
- Não há como exportar os detalhes.
- O módulo UI Automation fornece alguns comandos, como Get-UIAControlChildren, para obter todos os controles filhos. inspect.exe pode atravessar todos os controles sob a janela, mas o desempenho não é avaliado para janelas complexas.
Implementação avançada: simplifica a abordagem para escrever o script
A partir da introdução acima, você pode ver que os pipelines são a principal maneira de escrever o script usando o módulo, embora às vezes os pipelines não sejam tão longos. Há uma abordagem para torná-lo mais simples e fácil, e a ideia principal é extrair os dados dos controles em um arquivo XML e unir os pipelines quando necessário do arquivo XML.
Vamos continuar com o exemplo acima:
Primeiro, gere um arquivo XML incluindo as propriedades e o relacionamento pai-filho dos controles. Adicionamos nós para cada controle necessário: o nome do nó é único para que possamos encontrar o controle imediatamente por nome, e o comando e suas propriedades são definidos como as propriedades dos nós.
Aqui está o arquivo XML para o formulário de teste que testamos:
Algumas funções devem ser definidas para unir os pipelines pesquisando o arquivo xml e executá-los:
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 } Até agora, essas são tarefas quase únicas, a menos que os próprios controles mudem.
Agora podemos automatizar as etapas nos seguintes scripts:
melhor downloader de youtube para mp3 grátis
#import the functions defined previously . MyLibrary.ps1 setText 'Name' 'Anna Smith' selectItem 'Gender' 'Female' toggleRadioButton 'Graduated' click 'Submit' Dessa forma, podemos nos livrar de muitos pipelines nos scripts, e a proficiência será melhorada muito.
Leitura recomendada => Introdução à ferramenta de automação Sikuli GUI
Conclusão:
Microsoft UIAutomation é uma ótima biblioteca para aqueles que desejam ter testes de automação de IU na área de trabalho do Windows com PowerShell.
A introdução acima é apenas um segmento da ferramenta. Sua abordagem simplificada é inspirada na ideia de extrair dados de scripts de teste, que é uma boa maneira de melhorar nossa proficiência em escrever testes de automação. Explore mais sobre isso aqui .
Por favor, compartilhe seus comentários abaixo e adoraríamos ouvir experiências de usuários do UIAutomation.
Leitura recomendada
- Tutoriais detalhados do Eclipse para iniciantes
- Tutorial SeeTest Automation: um guia de ferramenta de automação de teste móvel
- Automação DevOps: como a automação é aplicada na prática DevOps
- Tutorial Geb - Teste de automação de navegador usando a ferramenta Geb
- O que é teste de automação (guia definitivo para iniciar a automação de teste)
- Tutorial do Selendroid: Android Mobile Test Automation Framework (Parte 1)
- Tutorial do Katalon Studio: uma ferramenta de automação de teste gratuita que você esperava
- Appium Studio for Eclipse: Automação Appium / Selenium de ponta a ponta a partir do Eclipse