Bom dia, estou tentando fazer uma macro com o python, está tudo funcionando até a parte de fazer o upload do arquivo. Já tentei varias interações e nenhuma conseguiu colocar o arquivo em anexo, acredito que nem mesmo clicou no botão porque ele fica amarelo quando clica e não anexa arquivo. Pode me ajudar? se for necessário mudar para outra plataforma, posso mudar, mas preciso acompanhar visualmente o que está acontecendo. Já tentei usar o AutoIT mas ele so roda em segundo plano, não abre a janela nem nada.
import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
# Caminho para o ChromeDriver
service = Service("C:\\Users\\Citra LTDA\\Documents\\navegador\\chromedriver.exe")
driver = webdriver.Chrome(service=service)
# Função para registrar mensagens em um arquivo de log
def log_message(message, file_path):
# Apagar o arquivo de log se já existir
if os.path.exists(file_path):
os.remove(file_path)
with open(file_path, 'a') as log_file:
log_file.write(message + "\n")
# Caminho do arquivo de log
log_file_path = "C:\\Users\\Citra LTDA\\Documents\\navegador\\executions.log"
# Abrir o site
try:
driver.get("site")
log_message("Página aberta com sucesso.", log_file_path)
except Exception as e:
log_message(f"Erro ao abrir a página: {e}", log_file_path)
# Adicionar um atraso para garantir que a página e os elementos sejam carregados
time.sleep(3)
# Preencher o campo de usuário
try:
user_input = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'logonuidfield'))
)
user_input.send_keys('-----')
log_message("Campo de usuário preenchido com sucesso.", log_file_path)
except Exception as e:
log_message(f"Erro ao preencher o campo de usuário: {e}", log_file_path)
# Preencher o campo de senha
try:
password_input = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'logonpassfield'))
)
password_input.send_keys('-----') # Substitua pela sua senha
log_message("Campo de senha preenchido com sucesso.", log_file_path)
except Exception as e:
log_message(f"Erro ao preencher o campo de senha: {e}", log_file_path)
# Clicar no botão de login
try:
login_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.NAME, 'uidPasswordLogon'))
)
login_button.click()
log_message("Botão de login clicado com sucesso.", log_file_path)
except Exception as e:
log_message(f"Erro ao clicar no botão de login: {e}", log_file_path)
# Adicionar um atraso para garantir que a página seja carregada
time.sleep(5)
# Clicar no <td> com o onclick associado ao botão "BOQ"
try:
boq_td = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, 'navNode_1_2'))
)
boq_td.click() # Forçar o clique diretamente na célula <td>
log_message("Clicou em BOQ com sucesso!", log_file_path)
except Exception as e:
log_message(f"Ocorreu um erro ao tentar clicar no botão 'BOQ': {e}", log_file_path)
# Adicionar um atraso para garantir que a próxima página carregue
time.sleep(5)
# Carregar o arquivo CSV
csv_file_path = "C:\\Users\\Citra LTDA\\Documents\\navegador\\csv\\CT_REM_SI_teste.CSV"
try:
if not os.path.isfile(csv_file_path):
log_message("Arquivo CSV não encontrado.", log_file_path)
else:
# Verificar se o campo de upload está visível
file_input = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.ID, 'WD18'))
)
# Simular um clique no campo de upload
file_input.click()
log_message("Campo de upload clicado com sucesso.", log_file_path)
# Usar send_keys para o upload do arquivo
time.sleep(1) # Adicionar um pequeno atraso para garantir que o clique seja processado
file_input.send_keys(csv_file_path)
log_message("Arquivo CSV carregado com sucesso.", log_file_path)
except Exception as e:
log_message(f"Erro ao carregar o arquivo CSV: {e}", log_file_path)
# Manter o navegador aberto por 10 segundos para ver o resultado
time.sleep(10)
# Fechar o navegador
driver.quit()
log_message("Execução finalizada e navegador fechado.", log_file_path)
# Para depuração: imprimir o conteúdo do log
with open(log_file_path, 'r') as log_file:
print(log_file.read())