PyAutoGUI

PyAutoGUI 3 Primeiros passos

Compartilhe!

Introdução

Neste tutorial, vamos aprender como usar a biblioteca pyautogui no Python 3. A biblioteca PyAutoGUI fornece suporte multiplataforma para gerenciar operações de mouse e teclado por meio de código para permitir a automação de tarefas.

Uma ferramenta como essa tem muitos aplicativos, alguns dos quais incluem tirar capturas de tela, automatizar testes de GUI (como Selenium ), automatizar tarefas que só podem ser feitas com uma GUI, etc.

Antes de prosseguir com este tutorial, saiba que existem alguns pré-requisitos. Você deve ter um conhecimento básico da sintaxe do Python e / ou ter feito pelo menos programação de nível iniciante em alguma outra linguagem. Fora isso, o tutorial é bastante simples e fácil de seguir para iniciantes.

Instalação

O processo de instalação do PyAutoGUIé bastante simples para todos os sistemas operacionais. No entanto, existem algumas dependências para Mac e Linux que precisam ser instaladas antes que a biblioteca PyAutoGUI possa ser instalada e usada em programas.

Windows

Para Windows, PyAutoGUI não possui dependências. Basta executar o seguinte comando em seu prompt de comando e a instalação estará concluída.

$ pip install PyAutoGUI

Mac

Para Mac, os módulos pyobjc-corepyobjc devem ser instalados em sequência primeiro. Abaixo estão os comandos que você precisa executar em sequência em seu terminal para uma instalação bem-sucedida:

$ pip3 install pyobjc-core
$ pip3 install pyobjc
$ pip3 install pyautogui

Linux

Para Linux, a única dependência é python3-xlib(para Python 3). Para instalar isso, pyautoguiexecute os dois comandos mencionados abaixo em seu terminal:

$ pip3 install python3-xlib
$ pip3 install pyautogui

Exemplos de código básico

Nesta seção, vamos cobrir algumas das funções mais comumente usadas da biblioteca PyAutoGUI.

Funções Genéricas

A função position ()

Antes de podermos usar funções PyAutoGUI, precisamos importá-lo para nosso programa:

import pyautogui as pag

A função position() nos diz a posição atual do mouse em nossa tela:

pag.position()

Saída:

Point (x = 643, y = 329)
A função onScreen ()

onScreen()função nos diz se o ponto com as coordenadas xey existe na tela:

print(pag.onScreen(500, 600))
print(pag.onScreen(0, 10000))

Saída:

True
False

Aqui podemos ver que o primeiro ponto existe na tela, mas o segundo ponto está além das dimensões da tela.

A função size ()

A função size() encontra a altura e largura (resolução) de sua tela.

pag.size()

Saída:

Size (width = 1440, height = 900)

Sua saída pode ser diferente e dependerá do tamanho da sua tela.

Operações comuns do mouse

Nesta seção, abordaremos as funções PyAutoGUI de manipulação do mouse, que incluem tanto mover a posição do cursor quanto clicar em botões automaticamente por meio do código.

A função moveTo ()

A sintaxe da função moveTo() é a seguinte:

pag.moveTo(x_coordinate, y_coordinate)

O valor de coordenada_x aumenta da esquerda para a direita na tela e o valor de coordenada_y aumenta de cima para baixo. O valor de coordenada_xcoordenada_y no canto superior esquerdo da tela é 0.

Observe o seguinte script:

pag.moveTo(0, 0)
pag.PAUSE = 2
pag.moveTo(100, 500) #
pag.PAUSE = 2
pag.moveTo(500, 500)

No código acima, o foco principal é a função moveTo() que move o cursor do mouse na tela com base nas coordenadas que fornecemos como parâmetros. O primeiro parâmetro é a coordenada x e o segundo parâmetro é a coordenada y. É importante observar que essas coordenadas representam a posição absoluta do cursor.

Mais uma coisa que foi introduzida no código acima é a propriedade PAUSE; basicamente, ele pausa a execução do script por um determinado período de tempo. A propriedade PAUSE foi adicionada no código acima para que você possa ver a execução da função; caso contrário, as funções seriam executadas em uma fração de segundo e você não conseguiria realmente ver o cursor se movendo de um local para outro na tela.

Outra solução alternativa para isso seria indicar o tempo de cada operação moveTo() como o terceiro parâmetro na função, por exemplo moveTo(x, y, tempo_em_secondos).

Executar o script acima pode resultar no seguinte erro:

Nota: Possível Erro

Traceback (most recent call last):
  File "a.py", line 5, in <module>
    pag.moveTo (100, 500)
  File "/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 811, in moveTo
    _failSafeCheck()
  File "/anaconda3/lib/python3.6/site-packages/pyautogui/__init__.py", line 1241, in _failSafeCheck
    raise FailSafeException ('PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.')
pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.

Se a execução da função moveTo() gerar um erro semelhante ao mostrado acima, significa que o fail-safe do seu computador está habilitado. Para desativar o fail-safe, adicione a seguinte linha no início do seu código:

pag.FAILSAFE = False

Este recurso é habilitado por padrão para que você possa facilmente interromper a execução de seu programa pyautogui movendo manualmente o mouse para o canto superior esquerdo da tela. Assim que o mouse estiver neste local, lançará pyautogui uma exceção e sairá.

A função moveRel ()

As coordenadas da função moveTo() são absolutas. No entanto, se quiser mover a arrastar o mouse em relação à posição atual do mouse, você pode usar a função moveRel().

O que isto significa é que o ponto de referência para esta função, ao mover o cursor, não seria o ponto superior esquerdo da tela (0, 0), mas a posição atual do cursor do mouse. Portanto, se o cursor do mouse estiver no ponto (100, 100) da tela e você chamar a função moveRel() com os parâmetros, (100, 100, 2) a nova posição do cursor de movimento será (200, 200).

Você pode usar a função moveRel() conforme mostrado abaixo:

pag.moveRel(100, 100, 2)

O script acima moverá o cursor 100 pontos para a direita e 100 pontos para baixo em 2 segundos, em relação à posição atual do cursor.

A função click ()

A função click() é usada para imitar as operações de clique do mouse. A sintaxe da função click() é a seguinte:

pag.click(x, y, clicks, intervalo, botão)

Os parâmetros são explicados da seguinte forma:

  • x: a coordenada x do ponto a atingir
  • y: a coordenada y do ponto a alcançar
  • clicks: o número de cliques que você gostaria de fazer quando o cursor chegar a esse ponto na tela
  • intervalo: a quantidade de tempo em segundos entre cada clique do mouse, ou seja, se você estiver fazendo vários cliques do mouse
  • botão: especifique qual botão do mouse você gostaria de pressionar quando o cursor chegar a esse ponto na tela. Os valores possíveis são rightleftmiddle.( Botão direito, Botão esquerdo e Botão do Meio)

Aqui está um exemplo:

pag.click(100, 100, 5, 2, 'right')

Você também pode executar funções de clique específicas da seguinte forma:

pag.rightClick(x, y)
pag.doubleClick(x, y)
pag.tripleClick(x, y)
pag.middleClick(x, y)

Aqui, xy representam as coordenadas xy, assim como nas funções anteriores.

Você também pode ter um controle mais refinado sobre os cliques do mouse, especificando quando pressionar o mouse para baixo e quando liberá-lo. Isso é feito usando as funções mouseDownmouseUp, respectivamente.

Aqui está um pequeno exemplo:

pag.mouseDown(x=x, y=y, button='left')
pag.mouseUp(x=x, y=y, button='left')

O código acima é equivalente a apenas fazer uma chamada pag.click(x, y).

A função scroll ()

A última função do mouse que iremos abordar é scroll. Como esperado, tem duas opções: rolar para cima e rolar para baixo. A sintaxe da função scroll() é a seguinte:

pag.scroll(amount_to_scroll, x=x_movement, y=y_movement)

Para rolar para cima, especifique um valor positivo para o parâmetro amount_to_scroll e para rolar para baixo, especifique um valor negativo. Aqui está um exemplo:

pag.scroll(100, 120, 120)

Tudo bem, isso era para as funções do mouse. Agora, você deve ser capaz de controlar os botões do mouse e também os movimentos por meio do código. Vamos agora passar para as funções do teclado. Existem muitos, mas cobriremos apenas aqueles que são usados ​​com mais frequência.

Operações comuns de teclado

Antes de passarmos às funções, é importante sabermos quais teclas podem ser pressionadas por meio do código pyautogui, bem como sua convenção de nomenclatura exata. Para fazer isso, execute o seguinte script:

print(pag.KEYBOARD_KEYS)

Saída:

['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen', 'command', 'option', 'optionleft', 'optionright']
A função typewrite ()

A função typewrite() é usada para digitar algo em um campo de texto. A sintaxe da função é a seguinte:

pag.typewrite(Texto1, Intervalo1)

No campo Texto1 coloque o que será digitado e Intervalo1 é o tempo em segundos entre cada pressionamento de tecla. Aqui está um exemplo:

pag.typewrite('JOBU', 1)

Executar o script acima irá inserir o texto “JOBU” no campo que está selecionado com uma pausa de 1 segundo entre cada pressionamento de tecla.

Outra maneira pela qual essa função pode ser usada é passando uma lista de teclas que você gostaria de pressionar em uma sequência. Para fazer isso por meio de código, veja o exemplo abaixo:

pag.typewrite(['j', 'o', 'b', 'u', 'backspace', 'enter'])

No exemplo acima, o texto seria inserido jobu , seguido pela remoção do final u. A entrada no campo de texto será enviada pressionando a tecla Enter.

A função hotkey ()

Se você não percebeu isso até agora, as teclas que mostramos acima não fazem menção a operações combinadas, como Control + C o comando de copiar. Caso você esteja pensando que poderia fazer isso passando a lista ['ctrl', 'c'] para a função typewrite(), você está errado. A função typewrite() pressionaria ambos os botões em uma sequência, não simultaneamente. E como você provavelmente já sabe, para executar o comando de cópia, você precisa pressionar a tecla C enquanto a mantém pressionada a ctrl.

Para pressionar duas ou mais teclas simultaneamente, você pode usar a função hotkey(), conforme mostrado aqui:

pag.hotkey('shift', 'enter')
pag.hotkey('ctrl', '2' ) # Para o símbolo @
pag.hotkey('ctrl', 'c')  # Para o comando copiar
A função screenshot ()

Se quiser fazer uma captura de tela da tela em qualquer instância, a função screenshot() é a que você está procurando. Vamos ver como podemos implementar isso usando PyAutoGUI:

scree_shot = pag.screenshot() #Para armazenar um objeto PIL contendo a imagem em uma variável

Isso armazenará um objeto PIL guardando a imagem em uma variável.

Se, no entanto, você deseja armazenar a captura de tela diretamente em seu computador, você pode chamar a função screenshot desta forma:

pag.screenshot('ss.png')

Isso salvará a captura de tela em um arquivo, com o nome do arquivo fornecido, no seu computador.

As funções confirm (), alert () e prompt ()

O último conjunto de funções que abordaremos neste tutorial são as funções da caixa de mensagem. Aqui está uma lista das funções da caixa de mensagem disponíveis em PyAutoGUI:

  1. Caixa de confirmação: exibe informações e oferece duas opções, ou seja, OK e Cancelar
  2. Caixa de alerta: exibe algumas informações e para confirmar que você as leu. Ele exibe um único botão, OK
  3. Caixa de Prompt: Solicita algumas informações do usuário, e ao entrar, o usuário deve clicar no botão OK

Agora que vimos os tipos, vamos ver como podemos exibir esses botões na tela na mesma sequência acima:

pag.confirm("Are you ready?") # Você esta pronto?
pag.alert("The program has crashed!") #O programa travou!
pag.prompt("Please enter your name: ") #Por favor, insira seu nome:

Na saída, você verá a seguinte seqüência de caixas de mensagem.

Confirme:

PyAutoGUI

Alerta:

PyAutoGUI

Incitar:

jobu pyautogui

Conclusão

Neste tutorial, aprendemos como usar a biblioteca PyAutoGUI para automação em Python. Começamos falando sobre os pré-requisitos para este tutorial, seu processo de instalação para diferentes sistemas operacionais, seguido de aprender sobre algumas de suas funções gerais. Depois disso, estudamos as funções específicas para movimentos do mouse, controle do mouse e controle do teclado.

Depois de seguir este tutorial de PyAutoGUI, você deve ser capaz de automatizar as operações para tarefas repetitivas.

Leia mais sobre:

Trabalhando com Python no Power BI

10 truques interessantes do Python

Compartilhe!