Descrição

Este script de automação foi projetado para interagir com o portal da Prefeitura de Curitiba e extrair as notas fiscais (NFSe) para os clientes de um escritório de contabilidade. O processo é baseado em uma lista de CNPJs fornecida, e o script navega pelo portal para fazer o download das notas necessárias. Ele utiliza PyAutoGUI para reconhecimento de imagens e Pandas para gerenciar os dados de CNPJs a partir de uma planilha.

⚠️ Observação: Verifique se as imagens necessárias (como o ícone da Lupa e a NFSe) estão disponíveis e corretamente alinhadas para que o processo de automação funcione corretamente.


Principais Funcionalidades

  1. Entrada de CNPJ: A automação lê os CNPJs de uma planilha fornecida e os insere no campo de pesquisa do portal.
  2. Download de NFSe: Após localizar a página apropriada, a automação interage com o portal para extrair e salvar a NFSe do cliente.
  3. Navegação por Reconhecimento de Imagens: Utiliza PyAutoGUI para localizar e clicar nas imagens que representam o ícone de busca (Lupa) e NFSe.
  4. Tratamento de Erros: Se uma imagem não for encontrada, uma mensagem será exibida para notificar o usuário sobre o problema.

Código da Função

python
Copy code
import pyautogui
import time
import pandas as pd
import webbrowser

# Função para clicar em uma imagem
def click_image(image_path, confidence=0.8):
    location = pyautogui.locateCenterOnScreen(image_path, confidence=confidence)
    if location is not None:
        pyautogui.click(location)
        time.sleep(1)  # Espera 1 segundo após cada clique
    else:
        print(f"Imagem {image_path} não encontrada.")

# Função para mostrar uma mensagem (substitua com a função real show_message)
def show_message():
    print("A automação está prestes a começar. Clique em OK para continuar.")

# Carrega a planilha
df = pd.read_excel(r'C:\\Users\\Usuario\\Desktop\\Image\\cnpj.xlsx')

# Atraso inicial para aguardar o carregamento do portal
time.sleep(3)

# Mostrar mensagem para continuar a automação
show_message()

# Loop para processar cada linha da planilha
for index, row in df.iterrows():
    # Localiza e clica no ícone da 'Lupa' (busca)
    click_image(r'C:\\Users\\Usuario\\Desktop\\Image\\Lupa.png')

    # Define o CNPJ e o caminho do arquivo
    CNPJ = str(row['CNPJ'])  # Convertendo CNPJ para string
    caminho = str(row['Caminho'])  # Convertendo caminho para string

    # Espera e navega usando o PyAutoGUI
    time.sleep(1)
    pyautogui.press('tab')
    time.sleep(1)
    pyautogui.typewrite(CNPJ)
    time.sleep(1)
    pyautogui.press('enter')
    time.sleep(2)

    # Localiza e clica no ícone da 'NFSe'
    click_image(r'C:\\Users\\Usuario\\Desktop\\Image\\NFSe.png')

    # Navega pelos campos necessários usando a tecla 'tab'
    for _ in range(3):
        pyautogui.press('tab')
        time.sleep(1)
    pyautogui.press('enter')
    time.sleep(1)

    for _ in range(4):
        pyautogui.press('tab')

    time.sleep(1)

    pyautogui.press('down')
    time.sleep(1)

    for _ in range(13):
        pyautogui.press('tab')

    pyautogui.press('enter')
    time.sleep(1)
    pyautogui.press('tab')
    time.sleep(1)
    pyautogui.press('enter')
    time.sleep(1)

    # Digita o caminho do arquivo
    pyautogui.typewrite(caminho)
    time.sleep(1)
    pyautogui.press('tab')
    pyautogui.press('enter')
    pyautogui.press('enter')
    time.sleep(3)

    # Voltar para a tela principal do portal
    url = '<https://isscuritiba.curitiba.pr.gov.br/iss/Principal/frmFramesPgPrincipal.aspx?sParam=MENSAGEM&sLogin=1>'
    webbrowser.open(url)
    time.sleep(1)
    pyautogui.hotkey('ctrl', 'w')
    pyautogui.press('tab')
    pyautogui.press('tab')
    pyautogui.press('enter')
    time.sleep(3)


Como Funciona