SikuliX com Jython — Artigo 1 de 3: Captura de screenshot
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