Automação da GUI usando Pyautogui, Python

Automação da GUI usando Pyautogui, Python
Pyautogui é um módulo de automação fornecido pela Python para controlar as funções de teclado e mouse via programa. Este módulo tem quase todas as funções que podem ser executadas pelo teclado e pelo mouse. Podemos usar essas funções para automatizar ações de mouse e teclado.

Instalando Pyautogui

Antes de usar funções de Pyautogui módulo, temos que instalá -lo. Para instalar este módulo, execute o seguinte comando no terminal.

$ pip install pyautogui

OU

$ pip3 install pyautogui

Agora Pyautogui está pronto para usar.

Obtendo resolução de exibição

Antes de automatizar as ações do mouse, é uma boa prática conhecer a resolução da tela. Podemos obter a resolução da tela usando .tamanho() método de

Pyautogui. Veja abaixo Obtendo resolução da tela em forma de 'largura x altura':

Python 2.7.15+ (padrão, 7 de outubro de 2019, 17:39:04)
[GCC 7.4.0] no Linux2

Digite “ajuda”, “direitos autorais”, “créditos” ou “licença” para obter mais informações.

>>> Importar Pyautogui
>>> largura, altura = pyautogui.tamanho()
>>> Imprimir (largura)
1366
>>> Imprimir (altura)
768

Isso significa que temos 1366 pixels na direção horizontal da tela e 768 pixels na direção vertical da tela.

Movendo o mouse em exibição

Então sabemos a resolução de nossa exibição. Agora podemos mover o mouse para qualquer lugar da tela dentro dos limites de resolução da exibição. Podemos mover o mouse usando .mover para() Método de Pyautogui. Exemplo abaixo do mouse em movimento para (100.100) posição em 2 segundos

>>> Importar Pyautogui
>>> Pyautogui.moveto (100.100, duração = 2)

Passamos três argumentos para .Método moveto (). Os dois primeiros argumentos são obrigatórios e mostram a posição de destino, mas o terceiro argumento não é obrigatório. Se não passarmos no terceiro argumento, o mouse se move para o destino em nenhum momento.

Clicando, rolando e arrastando mouse

Pyautogui fornece alguns métodos para controlar as ações do mouse. Podemos clicar, rolar e arrastar o mouse usando métodos diferentes.

Clicar em ação do mouse pode ser executada usando .Método de clique (). Antes de clicar, mova o mouse para o pixel necessário e depois use .Clique () Método para clicar. A seguir, o exemplo para executar a ação de cliques do mouse. Exemplo abaixo moverá o mouse para (300.201) pixel e clicar no mouse.

>>> Importar Pyautogui
>>> Pyautogui.Moveto (300.201)
>>> Pyautogui.clique()

Você pode clicar duas vezes no mouse usando .Duplo click() método.

>>> Pyautogui.Moveto (300.201)
>>> Pyautogui.Duplo click()

Pyautogui fornece um método .rolagem() Para rolar o mouse para cima ou para baixo. Este método toma um número inteiro como um argumento e depois rola para cima ou para baixo, dependendo do número inteiro. Se você passar por um número inteiro positivo, ele rolará para cima e para um número inteiro negativo, ele rolará para baixo. Quanto vai rolar? Depende do valor de inteiro.

>>> Importar Pyautogui
>>> Pyautogui.Role (20)
>>> Pyautogui.Roll (-20)

No exemplo acima, primeiro o mouse rolará 20 unidades e depois rolará para baixo 20 unidades.

A operação de arrastamento do mouse também pode ser aplicada usando .dragto () Método do módulo Pyautogui. Arrastar significa, mover o mouse enquanto pressiona um dos botões do mouse. Este método leva três argumentos, os dois primeiros argumentos para exibir as coordenadas do destino e o último argumento é o tempo de duração que significa quanto tempo levará para se mudar para o destino.

Para ver a operação de arrastamento, abra a tinta, maximize a janela, escolha o lápis e execute os seguintes comandos no shell interativo. O código moverá o mouse para (138.229) pixel em 2 segundos e depois arrasta o mouse do pixel atual para o pixel necessário também em 2 segundos.

>>> Importar Pyautogui
>>> Pyautogui.moveto (138, 229, duração = 2)
>>> Pyautogui.dragto (238, 229, duração = 2)
>>> Pyautogui.Dragto (238, 329, duração = 2)
>>> Pyautogui.arrasto (138, 329, duração = 2)
>>> Pyautogui.arrasto (138, 229, duração = 2)

O código acima fará um programa quadrado em tinta arrastando o mouse.

Como encontrar as coordenadas de um diretório ou ícone de arquivo

Para encontrar as coordenadas de um arquivo ou um diretório, .posição() o método é usado. Este método retorna as coordenadas em que o mouse está presente atualmente. Siga as etapas dadas para encontrar coordenadas

  1. Abra o console python
  2. Tipo de posição ()
  3. Antes de pressionar a tecla 'Enter', mova a seta do mouse para o ícone, onde deseja encontrar coordenadas
  4. Em seguida, pressione Enter para executar o comando

Manuseio de pausa e falha

Você está escrevendo um script para automatizar suas ações do mouse e precisa de uma breve pausa entre cada comando. Como você vai gerenciar? Você vai usar .dormir() método de TEMPO módulo após cada comando? Mas aumentará a duração do seu código. Isso pode ser feito configurando Pyautogui.PAUSA variável para o número de segundos que você deseja uma pausa. Isso criará uma pausa após cada comando. O exemplo abaixo faz uma pausa em 3 segundos entre cada comando.

>>> Importar Pyautogui
>>> Pyautogui.Pausa = 3
>>> Pyautogui.Moveto (100.100)
>>> Pyautogui.Moveto (200.200)

Python também tem um FailSafe recurso. Para ativar esse recurso, definimos Pyautogui.FailSafe para verdadeiro. Como isso funciona? Por exemplo, sua tela tem uma resolução de 1366 x 768. Se você mover o mouse para (1500.1500), o programa travará o aumento. Você pode lidar com esta exceção usando a tentativa e exceto a declaração ou desativando Pyautogui.FailSafe. Ao desativar o recurso FailSafe, o programa não aumentará esta exceção.

>>> Importar Pyautogui
>>> Pyautogui.Fracasafe = false
>>> Pyautogui.tamanho()
Tamanho (largura = 1366, altura = 768)
>>> Pyautogui.Moveto (1500.1500)
>>> Pyautogui.Moveto (100.100)

No exemplo acima, passamos o mouse (1500.1500) pixels, mas a tela possui (1366.768) pixels. O programa ignorou esta exceção.

Enviando uma string do teclado

Pyautogui fornece um recurso para passar uma string do teclado. Isso pode ser feito usando .Método typewrite () deste módulo. Antes de passar a string do teclado, concentre -se na janela onde você vai passar pela string. Para se concentrar na janela necessária, podemos usar .Método de clique ().

Usamos um semicolon entre os dois comandos, pois ele se concentra no editor de texto e passamos a corda um atrás do outro. Agora a questão é como podemos passar as teclas 'alt' ou 'shift'. Essas chaves podem ser representadas por valores curtos de string. Alguns valores de string são dados abaixo.

Chaves String Values
Chaves alt esquerda e direita 'Altleft', 'Altright'
Chaves de mudança esquerda e direita 'shiftleft', 'shiftright'
Chaves de controle esquerda e direita 'Ctrlleft', 'Ctrlright'
Page Up and Page Down Keys 'PageUp', 'PageDown'
Backspace e excluir as chaves 'backspace', 'excluir'
Teclas de seta para baixo, para baixo, para a esquerda e direita 'Up', 'Down', 'Esquerda', 'direita'
Caps Bloquear tecla 'Capslock'
Digite a chave 'Enter'
Chave Esc 'Esc'
Tecla de guia 'Guia'
Chaves em casa e final 'casa', 'fim'
F1 a F12 Keys 'f1', 'f2',… . , 'F12'
Tecla de bloqueio num 'Numlock'
Chave PRTSC 'PrintScreen'
Insira a chave 'inserir'

Para passar por uma das teclas acima, usamos esses valores de string na forma de lista. O exemplo a seguir esclarecerá isso. O código está passando 'Capslock' duas vezes. Primeira vez na forma de lista e sequência simples da segunda vez. Passando 'Capslock' na lista pressiona a tecla 'Caps Lock'. E o segundo 'capslock' simplesmente escreve 'Capslock' no capital como 'Capslock' é pressionado primeiro.

>>> Importar Pyautogui
>>> Pyautogui.Typewrite (['capslock']); pyautogui.Typewrite ('Capslock')
Capslock >>> CAPSLOCK

Pressionando atalhos

Um atalho é a combinação de chaves para executar algumas tarefas. Por exemplo, o atalho 'Alt+F4' é usado para fechar a janela atual. Uma combinação de chaves também pode ser passada do teclado usando o módulo pyautogui. Para pressionar 'Alt+F4', primeiro pressionamos e seguimos a tecla 'Alt' e depois pressione a tecla F4 '. Depois de liberar a chave 'F4', soltamos a tecla 'Alt'. Aqui vamos usar .keyUp () e .keydown () Métodos para pressionar uma combinação de chaves. A seguir, o exemplo mostra a tecla de pressionar e segurar a tecla 'Alt' e pressionar e manter a tecla 'F4' juntos.

Importar Pyautogui
tempo de importação
Pyautogui.keydown ('alt')
Pyautogui.keydown (<'f4')
tempo.dormir(.5)
Pyautogui.keyUp ('f4')
Pyautogui.keyUp ('alt')

OBSERVAÇÃO: No exemplo acima, não usamos a lista do valor da string de 'alt' e 'f4'. A lista de valor da string é passada apenas para .Typewrite () método.

É muito complicado pressionar e segurar a tecla 'Alt' e pressionar a tecla 'f4' e depois de liberar a tecla 'f4' e depois libere a tecla 'alt'. Isso pode ser feito simplesmente usando .tecla de atalho () método. A seguir, o exemplo limpará o conceito.

Importar Pyautogui
tempo de importação
Pyautogui.tecla de atalho ('alt', 'f4')

Tomando e analisando a captura de tela

Também podemos tirar capturas de tela usando Python. O módulo Pyautogui oferece .Captura de tela () Método para tirar a captura de tela da tela atual. A captura de tela pode ser exibida usando .mostrar() método. Execute o seguinte comando para tirar uma captura de tela e exibi -lo.

>>> Importar Pyautogui
>>> img = pyautogui.Captura de tela ()
>>> IMG.mostrar()

Quando você executa os comandos acima para tirar a captura de tela, ele será salvo na variável 'img'. Agora podemos chamar mais métodos na variável 'img'.

Podemos obter uma tupla dos valores RGB do nosso pixel necessário usando .getpixel () Método na variável 'img'. Argumento passado para .O método getpixel () é uma tupla que contém as coordenadas x e y da captura de tela. Execute o seguinte comando no shell interativo.

>>> IMG.getpixel ((2,3))
(85, 82, 74)

Além disso, podemos obter o tamanho da imagem usando o seguinte comando

>>> IMG.tamanho
(1366, 768)

Podemos verificar se os pixels de tela fornecidos com o valor RGB fornecido ou não. Isso pode ser feito usando .pixelmatchescolor () método. Um total de três argumentos são passados ​​para este método. Os dois primeiros argumentos são as coordenadas X e Y da tela e o terceiro argumento é uma tupla dos valores de RGB. Este método retorna 'True' se a cor corresponder com o pixel, caso contrário 'false'. Este método pode ser usado da seguinte maneira

>>> Pyautogui.pixelmatchescolor (2,3, (85,82,74))
Verdadeiro
>>> Pyautogui.pixelmatchescolor (3,5, (52,85,74))
Falso

Vimos alguns princípios básicos e agora nas seções a seguir, veremos alguns casos de uso de automação da GUI usando o módulo Pyautogui.

Abrindo automaticamente arquivos diferentes para você

Todos os dias em seu escritório, você precisa abrir muitos arquivos para inserir alguns dados de funcionários manualmente. É uma coisa um pouco chata de se fazer. Primeiro, vá para o diretório de documentos e depois vá para outro diretório e abra um arquivo, depois retorne ao diretório de documentos e Goto outro diretório e faça a mesma coisa etc.

Isso pode ser feito simplesmente escrevendo um script python. O que você precisa fazer é executar apenas o script e o script abrirá todos os arquivos.

Para executar esta tarefa, antes de tudo, você precisa localizar as coordenadas de seguir

  1. Ícone de cada diretório
  2. Ícone de cada arquivo
  3. Minimize o botão de arquivos

Como encontrar as coordenadas foi explicado anteriormente.

# Importando módulo Pyautogui
Importar Pyautogui
# gerando uma pausa de 1.5 segundos após cada comando
Pyautogui.Pausa = 1.5
# Movendo o mouse para o ícone 'este PC' na barra de tarefas
Pyautogui.Moveto (346.752)
# Clicando no ícone 'This PC'
Pyautogui.clique()
# Movendo o mouse para o ícone do diretório 'documentos'
Pyautogui.Moveto (95.184)
# Clicando no diretório 'documentos'
Pyautogui.clique()
# Movendo o mouse para o diretório dentro do diretório 'documentos'
Pyautogui.Moveto (249.107)
# clique duas vezes para abrir o diretório
Pyautogui.Duplo click()
# movendo o mouse no arquivo para abrir
Pyautogui.Moveto (249.108)
# clicando duas vezes no arquivo para abrir
Pyautogui.Duplo click()
# movendo o mouse no botão Minimize
Pyautogui.Moveto (1310,47)
# clicando para minimizar o arquivo
Pyautogui.clique()

No código acima, abrimos apenas um arquivo. Da mesma forma, você pode estender o código para abrir vários arquivos.

Parecendo ocupado no sistema

Você está no seu trabalho e não está trabalhando no sistema, mas seu sistema possui um aplicativo instalado que pode adivinhar se você está sentado ocioso ou trabalhando no sistema usando o movimento do mouse. Então você deseja automatizar o mouse para se mover após cada curto intervalo de tempo.

Isso pode ser feito escrevendo um pequeno script python usando Pyautogui módulo.

Importar Pyautogui
# gerando uma pausa de 5 segundos entre o movimento do mouse
Pyautogui.Pausa = 5
tentar:
# Running Infinite Loop
enquanto é verdade:
# Mover Mouse para (200.300) coordenadas em 1 segundo
Pyautogui.moveto (200.300, duração = 1)
# Moving Mouse para (201.310) Coordenar em 1 segundo
Pyautogui.moveto (201,310, duração = 1)
Exceto keyboardInterrupt:
impressão ('desligando')

No código acima, estamos movendo o mouse de um local para outro após cada 5 segundos. Podemos sair deste código pressionando 'Ctrl+C'.

Conclusão

Neste blog, discutimos como você pode usar o módulo Pyautogui para automatizar a GUI do sistema. Diferentes funções deste módulo foram explicadas e você pode automatizar quase tudo o que pode ser feito usando teclado e mouse usando essas funções.