Season Libraries - Ep. 05 Library AutoIt - Automação Desktop


Olááááá Robotizadores!!! O post da vez é sobre automação de aplicativos Desktop com a dupla Robot + Library AutoIt, para quem ainda não o conhece dá uma olhadinha no site do AutoIt e no projeto AutoIt Library para Robot! Bora robotizar esses desktops também??? Só vem...




#FICADICA: Lembrando que é necessário que você já tenha uma noção sobre o Robot Framework!!! Se ainda não tem, dá uma olhadinha nos primeiros posts do blog!!!


01 - Instalação da library AutoItLibrary

Com o seu terminal em modo administrador, execute:

pip install -U robotframework-autoitlibrary --no-cache-dir --pre


02 - Captura dos elementos/controles (Controls)

Ao instalar o AutoIt, um diretório é criado, provavelmente (C:\RobotFramework\Extensions\AutoItLibrary).

Nele temos a documentação das keywords (AutoItLibrary.html), a documentação do próprio AutoIt (AutoItX.chm) e o aplicativo de mapeamento de objetos (Au3Info.exe).

Diretório criado pela instalação do AutoItLibrary

Você usará o Au3Info.exe para capturar os dados dos controles/elementos que quer interagir. No vídeo abaixo mostrarei como fazer!


03 - Escreva seu código no Robot Framework

Segue meu exemplo... Usei um aplicativo meu, que fiz em Delphi, chamado SEALsScript.exe bem simples apenas para exemplificar. O .exe se encontra no meu GitHub se quiserem utilizá-lo.

Abaixo o código como fica, mas os detalhes serão explicados no vídeo!!




04 - Montando o script do teste

Segue vídeo mostrando passo-a-passo:



05 - Dicas

01 - Dependendo do software que você irá automatizar, muitos controles/elementos são customizados e não reconhecidos pelo AutoIt, isso é muuuito comum no mundo da automação Desktop, mas como o Robot é um framework genérico, ele permite utilizarmos quantas libraries quisermos, certo? Então, se algum elemento na tela não foi encontrado, utilize a library Sikuli para interagir com esse elemento via reconhecimento de imagem!!!!

02 - Talvez o uso de Sleeps seja necessário para que dê tempo do seu software carregar a tela desejada, use Sleeps em conjunto com os Waits do AutoIt para esperar as telas serem carregadas e então interagir com os elementos.

03 - Use de preferência uma máquina virtual: testes Desktop tendem a ser muito lentos e não pode ter movimentos na tela, então para você não ficar "preso" sem poder mexer na sua máquina, faça esse tipo de teste numa máquina virtual!!!

04 - Automação Desktop deve ser muuuitoo bem pensada e planejada, principalmente em sistemas legados!! Falhas de não reconhecimento de elementos e lentidão na execução são os vilões da parada, opte por um plano de testes bem específico, exemplo: testes de regressão muito críticos, bugs recorrentes, bateria de testes de homologação, etc. Não é aconselhado automatizar TUDO!! Organize seus testes e sua infraestrutura para execuções paralelas e builds noturnos (para quem trabalha com CI).


E aí gostaram???? O exemplo está disponível no meu GitHub ... Abraço robotizadores!!! Até a próxima...

Comentários

  1. Oi May, sou inicante em Robot Framework e estou com dificuldade em fazer captura na aplicação desktop que estou automatizando. Estou utilizando o AutoIt e o elemento que quero capturar não é reconhecido, meu receio de utilizar o Sikuli é em questão de resolução, isso procede? A resolução da aplicação pode interferir na captura por imagem? Teria uma outra sugestão pra acessar um elemento que não foi reconhecido pela ferramenta de captura?

    ResponderExcluir
    Respostas
    1. Olá Viviane!! Sim, procede sim essa informação, eu sempre sugiro automatizar desktop em uma máquina virtual ou até uma máquina física, mas que seja única para o time de automatizadores, e manter fixa a resolução nessa máquina. Pois realmente a resolução pode atrapalhar sim. Ou vantagem de ser uma outra máquina que não a sua própria, é que, quando sua suíte de testes estiver gigante, você não conseguirá trabalhar na sua máquina, pois os testes estarão executando e você não poderá mexer em nada. Para estudos faça na sua máquina, mas no trabalho já veja com o pessoal de infra sobre um servidor remoto que você pode automatizar lá, assim mata o problema da resolução e da execução demorada, pois enquanto os testes estiverem executando lá no servidor, você pode continuar trabalhando normalmente na sua máquina!

      Excluir
  2. Obrigada pela dica, vou verificar sobre automatizar em outra máquina, não tinha pensado nisso. Sobre a captura de um elemento não reconhecido pelo AutoIt, funcionaria passar no parâmetro "controlID" de um determinado método o componente que foi utilizada na aplicação? Contextualizando minha pergunta, a aplicação é desenvolvida em Delphi e o componente que preciso acessar é um PopupMenu em clique de botões. O AutoIt reconhece o botão, porém não o item do menu.

    ResponderExcluir
  3. Sobre o Menu, na minha experiência com sistemas Delphi que tive que automatizar, os frameworks que usei nenhum capturava o item de um menu, aí usei duas estratégias:
    1 - Usei as teclas de atalho para acessar o menu (ex.: CTRL+P+C), mas para isso o sistema tinha configurado para cada menu essas teclas de atalho (quando não tinha eu pedia aos DEVs para colocarem), aí você não usa o "Click" e sim o "Send", como se o usuário tivesse acessando o menu via teclas de atalho mesmo!!
    2 - E em outros casos usei o Sikuli.

    ResponderExcluir
    Respostas
    1. Muito obrigada pela sugestão! Vou fazer isso, usar as teclas de atalho dos menus. Obrigada pela atenção e parabéns pelo blog, é de muita ajuda!

      Excluir
    2. Por nada Viviane!!! Se ainda não faz parte, entre no grupo: https://chat.whatsapp.com/FtZJwxl8es7Li770OgAgIi, lá tem muitos feras em Robot e automação que podem te ajudar também!! Abraço e sucesso no seu projeto!!

      Excluir
  4. Oi Mayara, boa tarde! Por gentileza, pode passar novamente o link do grupo no WhatsApp, pois o que você passou antes não está mais funcionando.

    ResponderExcluir
    Respostas
    1. Estamos migrando para o Telegram!!!
      https://t.me/joinchat/GysrsxRCsMM--5EkkguYYQ

      Excluir
  5. Este comentário foi removido pelo autor.

    ResponderExcluir
  6. May, seu post ta perfeito, só não consegui uma maneira de fazer o robot ir até a pasta onde o executável está -> clicar duas vezes. teria alguma dica?

    ResponderExcluir
    Respostas
    1. Olá Carlos... não sei se entendi a sua dúvida, mas poderia passar o caminho do executável... Run c:\\pasta\\SEALsScript.exe

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

[ATUALIZADO] Season Libraries - Ep. 01: Library Faker para informações aleatórias e fakes

Novo Curso: Robot Framework com Playwright e GitHub Actions

Season WEB Testing - Ep. 03: Open Browser - Chrome Options