Skip to content

Instantly share code, notes, and snippets.

@eliasalbuquerque
Last active January 15, 2024 12:04
Show Gist options
  • Save eliasalbuquerque/156b9cce3b1894cd30f00299f0e288af to your computer and use it in GitHub Desktop.
Save eliasalbuquerque/156b9cce3b1894cd30f00299f0e288af to your computer and use it in GitHub Desktop.
Curso Dev Aprender | Jhonatan de Souza

Desafio

Tirar screenshot do programa Notepad aberto e salvar como arquivo .jpg.

Código

# 202401 - Python 3.12.0
# 4.12 - Tirando prints da tela

import pyautogui
import time
import logging
import logging.config
import keyboard

# configurando logging:
logging.config.fileConfig(fname='config.ini', disable_existing_loggers=False)
logger = logging.getLogger(__name__)


def screenshot_notepad():
    logging.info('INICIO: screenshot notepad.')
    try:
        def abrindo_notepad(frase):
            pyautogui.hotkey('win')
            pyautogui.click(955, 159, duration=.5)
            pyautogui.typewrite('notepad')
            time.sleep(1)
            pyautogui.hotkey('enter')
            time.sleep(2)
            pyautogui.hotkey('ctrl', 'n')
            time.sleep(1)
            keyboard.write(frase, delay=.1)
            logging.info('Notepad aberto.')

        abrindo_notepad('42')

        def salvando_screenshot():
            # obtendo janela ativa
            janela_ativa = pyautogui.getActiveWindow()

            # screenshot janela ativa
            screenshot = pyautogui.screenshot(region=(janela_ativa.left, 
            janela_ativa.top, janela_ativa.width, janela_ativa.height))

            # salvando screenshot
            screenshot.save(r'assets/screenshot2.jpg')
            logging.info('Screenshot salvo.')

        salvando_screenshot()
    except Exception as e:
        logging.error(f"Erro ao tirar screenshot do notepad: {e}")


screenshot_notepad()

A função screenshot_notepad() abre e salva o screenshot com as funções:

  • abrindo_notepad(): usando os métodos hotkey(), click() e typewrite(), do módulo pyautogui, além do módulo keyboard com o método write() e, por último, o módulo time com o método sleep().

    1. abre notepad;
    2. abre nova aba;
    3. escreve a frase.
  • salvando_screeshot(): seleciona a janela ativa com getActiveWindow(), tira o screenshot com o método screenshot(), passando as coordenadas da janela ativa, no caso, o notepad. Ao final, salva o screenshot na pasta assets do projeto.

Tratamento de erros:

  • logging: configuração de log de uso da aplicação, utilizando arquivo de configuração global config.ini. Logging esta sendo utilizado para gerar informações de cada processo realizado e erros da aplicação.

  • try / except: executa o código e exporta o erro caso ocorra.

Resultado

screenshot2


GitHub: eliasalbuquerque/python-automation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment