SikuliX com Jython — Artigo 1 de 3: Captura de screenshot

Carol Ciola
2 min readJan 12, 2018

--

Este artigo é uma continuação de uma série de 3 artigos que listam alguns códigos de funcionalidades comumente utilizadas no SikuliX na linguagem Jython. Para saber mais, acesse o artigo de Introdução.

Declare esta biblioteca no topo do script:

import shutil

Abaixo temos a variáveis screenshotsPasta, que indica o caminho da pasta a qual os arquivos de screenshot serão armazenados, e temos a função numPrint_func, que é um mero contador para incrementar o número da imagem a ser salva.

screenshotsPasta = "C:\Users\cciola\Desktop\SikuliX\Screenshots\\"

Abaixo declaramos o valor da variável numPrint e em seguida declaramos a função para:

  • indica que a variável numPrint é global
  • incrementa o valor de numPrint em 1
numPrint = 0
def numPrint_func():
global numPrint
numPrint += 1

Esta é a função que:

  • aguarda o tempo de 1 segundo para passar ao próximo passo wait(1)
  • chama a função de incremento do número do print numPrint_func
  • captura o screenshot shutil.move(capture(Screen())
  • armazena o arquivo na pasta indicada no caminho informado anteriormente screenshotsPasta
  • renomeia o arquivo conforme desejado, incrementando o valor de numPrint e convertendo-o para string, já que foi declarado como int na variável
  • define a exrtensão do arquivo .png
def capturaImagem_func():
wait(1)
numPrint_func()
shutil.move(capture(Screen()), screenshotsPasta + 'NomeDoArquivo_' + (str(int(numPrint))) + '.png')

Veja o script funcionando

Copie e cole o script abaixo no SikuliX e execute. O resultado será a exibição de um popup informando o caminho no qual o arquivo com o screenshot foi gerado.

Caso deseje capturar somente a janela que possui o foco (função similar ao Alt+PrintScreen), deve-se utilizar:

firstWindow = App.focusedWindow()
firstWindow.highlight(2)

Aqui temos:

  • o comando para verificar a janela que possui o foco firstWindow = App.focusedWindow()
  • o comando para destacar a janela que o SikuliX está considerando como foco, indicando os segundos que o destaque será aplicado firstWindow.highlight(2)

Deve-se declarar a instância firstwindow dentro de shutil.move(capture()), ficando shutil.move(capture(firstwindow). Costumo declarar o trecho de código abaixo (que imprime o texto desejado no log do SikuliX) logo após a variável que efetuará o screenshot, pois caso o script dê erro ao executar e não chegue a exibir o popup, é possível verificar qual foi o último screenshot capturado.

print ('Arquivo gerado: %d' %numPrint)

Dúvidas me contate! carol.ciola@gmail.com

Gostou deste post? Aplauda👏 e ajude outras pessoas a encontrar este conteúdo também :)

--

--