



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Fax o imput do CNPJ em Pythom, codigo em selenium que le uma lista e CNPJ e imput em sistemas web
Tipologia: Resumos
1 / 5
Esta página não é visível na pré-visualização
Não perca as partes importantes!




from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException, NoSuchElementException import time import sys from datetime import datetime
cnpjs = [ "00000000000000", ]
WAIT_TIMEOUT = 10 SHORT_WAIT = 2 CNPJS_POR_LOTE = 3 INTERVALO_MINUTOS = 1 def setup_driver(): """Configura e retorna o driver do Chrome""" options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--start-maximized') return webdriver.Chrome(options=options) def fazer_login(driver): """Faz login no sistema""" print("=== FAZENDO LOGIN ===") driver.get("https://xxx/web/login")
usuario = WebDriverWait(driver, WAIT_TIMEOUT).until( EC.presence_of_element_located((By.ID, "login")) ) usuario.clear() usuario.send_keys("abc")
senha = driver.find_element(By.ID, "password") senha.clear() senha.send_keys("xyz")
btn_login = driver.find_element(By.XPATH, "//button[@type='submit']") btn_login.click()
WebDriverWait(driver, WAIT_TIMEOUT).until( EC.presence_of_element_located((By.CLASS_NAME, "o_main_navbar"))
print(" ✓ Login realizado com sucesso!") def aguardar_intervalo(lote_atual, total_lotes): """Aguarda o intervalo entre lotes""" if lote_atual < total_lotes: print(f"\n ⏰ AGUARDANDO {INTERVALO_MINUTOS} MINUTO(S) PARA PRÓXIMO LOTE...") for i in range(INTERVALO_MINUTOS * 60, 0, -1): minutos = i // 60 segundos = i % 60 sys.stdout.write(f"\r ⏳ Próximo lote em: {minutos:02d}:{segundos:02d}") sys.stdout.flush() time.sleep(1) print("\r ✓ Intervalo concluído! Continuando...") def processar_cnpj(driver, cnpj, index, total): """Processa um CNPJ individual""" print(f"\n=== PROCESSANDO CNPJ {index} de {total}: {cnpj} ===") url_formulario = "https://xxxx/web#menu_id=371&cids=1&action=162&model=sped.participante&view_typ e=form"
driver.get(url_formulario) time.sleep(SHORT_WAIT)
campo_cnpj = WebDriverWait(driver, WAIT_TIMEOUT).until( EC.presence_of_element_located((By.ID, "cnpj_cpf_0")) ) campo_cnpj.clear() campo_cnpj.send_keys(cnpj) print(f" ✓ CNPJ preenchido: {cnpj}")
btn_salvar = WebDriverWait(driver, WAIT_TIMEOUT).until( EC.element_to_be_clickable((By.XPATH, "//button[contains(@class, 'o_form_button_save')]")) ) btn_salvar.click() print(" ✓ Botão Salvar clicado")
time.sleep(SHORT_WAIT) return verificar_resultado(driver, cnpj) def verificar_resultado(driver, cnpj): """Verifica se o CNPJ foi salvo ou se já existe""" try:
total_cnpjs = len(cnpjs) lotes = [cnpjs[i:i + CNPJS_POR_LOTE] for i in range(0, total_cnpjs, CNPJS_POR_LOTE)] total_lotes = len(lotes) print(f"\n 📊 TOTAL: {total_cnpjs} CNPJs divididos em {total_lotes} lote(s) de {CNPJS_POR_LOTE}") print(f" ⏰ Intervalo: {INTERVALO_MINUTOS} minuto(s) entre lotes")
for lote_num, lote in enumerate(lotes, 1): print(f"\n{'='50}") print(f" 📦 PROCESSANDO LOTE {lote_num} de {total_lotes}") print(f" 🕒 Início: {datetime.now().strftime('%H:%M:%S')}") print(f" 📋 CNPJs no lote: {len(lote)}") print(f"{'='50}")
cnpjs_processados = 0 cnpjs_sucesso = 0 cnpjs_duplicados = 0 cnpjs_erro = 0 for i, cnpj in enumerate(lote, 1): cnpj_global_index = (lote_num - 1) * CNPJS_POR_LOTE + i resultado = processar_cnpj(driver, cnpj, cnpj_global_index, total_cnpjs) cnpjs_processados += 1 if resultado == "sucesso": cnpjs_sucesso += 1 elif resultado == "duplicado": cnpjs_duplicados += 1 else: cnpjs_erro += 1
print(f"\n 📊 RESUMO DO LOTE {lote_num}:") print(f" ✅ Sucesso: {cnpjs_sucesso}") print(f" ⚠ Duplicados: {cnpjs_duplicados}") print(f" ❌ Erros: {cnpjs_erro}") print(f" 📦 Total processado: {cnpjs_processados}")
if lote_num < total_lotes: aguardar_intervalo(lote_num, total_lotes)
print(f"\n{' 🎉 '*20}") print("PROCESSAMENTO CONCLUÍDO!") print(f"Total de CNPJs processados: {total_cnpjs}") print(f"Lotes processados: {total_lotes}")
print(f"Horário de conclusão: {datetime.now().strftime('%H:%M:%S')}") print(f"{' 🎉 '*20}") except Exception as e: print(f"\n ❌ ERRO CRÍTICO: {e}") print("Detalhes do erro:", type(e).name) finally: print("\nFechando navegador...") driver.quit() if name == "main": main()