Teste de Software, QA, DevOps

SikuliX Parte 1 – IDE

Olá galera,

Há algum tempo me pediram para fazer um post sobre SikuliX, então com um pouco de atraso vou iniciar uma série de posts falando sobre esta ferramenta e como podemos utilizá-la. Para quem não a conhece SikuliX está é uma ferramenta capaz de automatizar através de interações com qualquer elemento exibido na tela, basicamente SikuliX realiza uma análise de imagem do que é exibido na tela a cada comando, e ao localizar a imagem cuja você espera, você será capaz de realizar estratégias de (click, hold, double click, right click, send text) entre outras neste ponto da tela. Além de trabalhar com as imagens SikuliX também é capaz de utilizar/capturar recursos nativos do SO como uso do teclado, abrir e fechar aplicações, coletar informações do sistema entre outras.

Depois dessa breve introdução, neste post inicial da série irei abordar a SikuliX IDE e alguns recursos que ela pode nos provê, lembrando que podemos criar scripts também através da SikuliX Scripts que será abordado nos próximos posts. Nas próximas seções irei abordar a instalação e como realizar alguns testes simples na IDE. Então vamos lá!

Requisitos SikuliX IDE

Para realizar a instalação devemos ter o seguinte ambiente configurado:

  1. Estar com o Java 1.7+ instalado, preferencialmente Java Development Kit (JDK) com JAVA_HOME definido no PATH do sistema.
  2. Possuir o instalador sikulixsetup.jar, este pode ser baixado em http://nightly.sikuli.de/ no link sikulixsetup….jar.
  3. Possuir conexão com a internet para download das bibliotecas do sikulisetup.

Instalação SikuliX IDE

  1. Criar uma pasta e adicionar o sikulixsetup.jar.
  2. Executar o arquivo dois cliques ou através da linha de comando java -jar sikulixsetup.jar considerando que você esteja no path da pasta.
  3. Marque as opções conforme abaixo e clique em Setup Now.Sikulix Setup
  4. Caso questionado sobre o Download de bibliotecas confirme Sim, baixando-as no local atual.
  5. Caso questionado se deseja baixar a bibliotecas Jython, também confirme Sim.
  6. Após a conclusão da instalação para SO Windows e Linux será exibido um executável runIDE, para MAC OS será gerado um Sikulix.app. Enjoy!
  7. Caso ocorra algum problema podes verificar melhores detalhes em http://nightly.sikuli.de/.

Aplicação de exemplo

Nesta série de posts usarei uma aplicação em Swing para demonstrar os comandos da SikuliX IDE e para os próximos posts com SikuliX Scripts. A aplicação está disponível em https://github.com/Vanilton18/examples-sikuli para abri-la basta executar a classe Main como JavaApplication. Caso não queira executar  projeto pode baixar o .jar executável em https://github.com/Vanilton18/examples-sikuli/releases/download/v1.0/examples-sikuli.jar

Let’s Go SikuliX IDE

Sikulix Interface

Sikulix Interface

Acima podemos ver a SikuliX IDE, na lateral é exibido alguns comandos básicos já mencionados no início do post, no menu superior opções de captura de imagem, adição de imagem e alguns comandos como Region e Offset que buscam aprimorar a localização das imagens, por fim os  comandos de execução. Na imagem acima também é possível notar no canto direito a palavra (python), é isso mesmo que você pensou a SikuliX IDE utiliza python para escrita de seus scripts, mas vamos fazer exemplos que sejam simples de compreender afinal o objetivo principal não é a linguagem python e sim o entendimento da ferramenta.  Mais detalhes da IDE vamos descobrindo aos poucos.

Então vamos à ação!

Primeiros Comandos na SikuliX IDE

Considerando a aplicação de exemplo aberta, vamos realizar nossos primeiros comandos com a IDE.

OBS: Todos estes exemplos estão disponíveis em https://github.com/Vanilton18/examples-sikuli-test-sikulixide bastando apenas importar para realizar os testes.

Primeiramente é bem estranho ver uma imagem no meio do código na IDE, mas este era o objetivo de quem criou a ferramenta, programar de forma “visual” :). A IDE neste ponto ajudará bastante no recorte das imagens, processo bem fácil apenas um clique na opção “Capturar Imagem”, ou diretamente no menu lateral usando uma das funções prontas como o click, hold e etc, e selecionar a área que deseja que o SikuliX IDE realize a interação.

O script acima realizará uma procura pela imagem passada dentro da condição de if, o comando sikuli “exists” avaliará se a imagem existe ou não, e seu retorno será true ou false.

Isso mesmo você fez um if com uma imagem 😀

Caso a imagem seja encontrada será exibido um popup com o texto ‘Uhuu! Encontrei o app aberto!’ senão será exibido o popup com o texto ‘Oops! Não encontrei o app aberto’. Você pode testar a execução do projeto com a aplicação visível e invisível para validar os dois popups.

OBS:

Caso o tempo para selecionar a imagem a ser recortada esteja muita curto, você pode aumentá-lo nas Preferências -> Capturando Tela.
O comando .decode('utf8') ao final da string é apenas mostrar corretamente as strings acentuadas.

Bem simples não!?

Interações Básicas SikuliX IDE

O script acima já demonstra outras funções como click, find (busca por imagem, esta função retorna exceção caso não localize) e hover (levar o ponteiro do mouse sobre a imagem esperada).

No script acima já podemos observar 3 novos comandos (text, paste e wait). De forma bem simples o “text” simula uma entrada de texto “one by one” um caracter de cada vez, enquanto o “paste” envia toda a string uma única vez, outro item a se observar nessas duas funções é que elas podem ou não ter uma imagem como parâmetro, esta imagem caso adicionada seria o local onde o texto iria ser inserido/colado, caso contrário o texto será enviado para o campo onde estiver o foco.

O comando wait também é bem simples ele faz a espera pela imagem passada como parâmetro, ele opcionalmente pode ter um segundo parâmetro que seria o seu timeout em segundos. Nos próximos posts entraremos em mais detalhes de waits.

Seguindo a sequência do script de teste, será realizado a validação de um nome diferente do esperado e conforme o esperado.

Creio que este post ficou um pouco longo, mas para facilitar o entendimento melhor sobrar detalhes do que faltar 🙂

Nas próximas semanas espero continuar a série de posts sobre o SikuliX concluindo a IDE e iniciando o SikuliX Scripts.

Até mais!

Compartilhe:

3 comentários

    • Lucas Ribeiro em 10 de fevereiro de 2016 às 12:46

    Responder

    Muito bom Vanilton!
    Por acaso vai abordar sobre a API em java também?

    1. Responder

      Olá Lucas,

      Obrigado pelo incentivo 🙂

      Irei abordar a API em Java também desde o mais simples até a estrutura de um projeto com Page Objects.

      Fica de olho que nas próximas semanas já faço uma nova postagem.

      Abraço

    • Petruvik em 2 de junho de 2018 às 19:36

    Responder

    melhor ferramenta que já vi. dei sorte de encontrá-la hoje. eu estava tentando de tudo, autoit, c# com selenium, mouse recorde, c# com process, 32 system, valeu com esta ferramenta da “para dominar o mundo”

Deixe uma resposta

O seu endereço de email não será publicado