Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Selenium para download de PDF

66 views
Skip to first unread message

Saulo Marinho

unread,
Jan 28, 2025, 9:48:28 AMJan 28
to Python Brasil
Olá amigos, espero que estejam bem!
Eu me chamo Saulo, estou iniciando agora meus estudos em python e desenvolvendo pequenos projetos com ajuda de cursos e principalmente de IA's como a Gemini e o ChatGPT. 
Estou desenvolvendo um bot para acessar uma plataforma de tribunal afim de acessar documentos relacionados a movimentações de processos (tudo dentro da legalidade), a parte de entrar na plataforma e acessar os documentos que preciso ja consegui fazer, entretanto estou preso no mais básico que é clicar no botão de download no navegador crome, para que o PDF seja baixado para o computador.
Estou usando o método find.element do selenium para isso mas sei que o elemento que quero está dentro de outros blocos, mesmo identificando estes blocos não consigo fazer com que o selenium encontro o botão.
Se alguém tiver familiaridade com o uso do selenium e puder me ajudar, posso compartilhar meu código. Desde já, agradeço!

Saulo Marinho

unread,
Jan 28, 2025, 9:49:23 AMJan 28
to Python Brasil
Olá amigos, estou enfrentando um problema.
Estou usando o crome para fazer o download de um arquivo PDF que está sendo visualizado no Crome, e preciso clicar no botão de Download padrão, mas o find.element() não consegue encontrar o elemento, mesmo seguindo todos os parâmetros corretamente. 

Já identifiquei que o elemento está dentro de outros containers que impedem, mas mesmo fazendo o tratamento disto, não consigo fazer com que o script encontre o elemento.
não consigo compartilhar meu código por aqui e nem o HTML da pagina pois é uma página privada, mas se alguem puder me ajudar no privado, eu agradeço!

OBS: a página não tem url do pdf para usar o reuqests, ja tentei.

Hugo Neri

unread,
Jan 28, 2025, 10:02:03 AMJan 28
to python...@googlegroups.com
Fala Saulo, beleza?

Você já tentou capturar o elemento xpath pelo inspecionar do site?

Outra dica é usar o WebDriverWait para aguardar os elementos da pagina carregar.

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver esta conversa, acesse https://groups.google.com/d/msgid/python-brasil/652d75e9-a0be-4a80-8371-218edb450e3cn%40googlegroups.com.

Victor Silva

unread,
Jan 28, 2025, 11:52:16 AMJan 28
to python...@googlegroups.com

É apenas um documento por página ou mais de um documento disponível pra download por página?

Dependendo do seu caso, pode usar também uma das abordagens a seguir:
Pode encadear a busca da tag do seu elemento, procurando pelas Tags pais. Dessa forma vc deve conseguir ir captando as descrições de cada elemento encontrado até chegar no que você quer.

Ou

Você pode usar um Java script executado no selenium, pra conseguir acessar melhor esse elemento, principalmente se ele for um span dentro de outro container qualquer. Pode pedir isso ao chat gpt se não manjar de JS. Se for usar essa opção,  sugiro testar tanto procurando diretamente pelo elemento  quanto usando o Java script para ir desde a tag pai do container até a tag fo seu elemento.


Perceu Bertoletti

unread,
Jan 28, 2025, 1:00:16 PMJan 28
to python...@googlegroups.com
Boa tarde!
Acredito que tu adicionar esse options no teu chromedrive deve te ajudar:

chrome_options.add_argument('--kiosk-printing')

te aconselho a dar uma olhada no link:

vai te mostrar algumas opções novas que o remote webdrive tem que facilitam o download.


imagem do perfil
Perceu Gonçalves Bertoletti
(54) 99662-2121





zica...@gmail.com

unread,
Jan 29, 2025, 2:32:36 AMJan 29
to Python Brasil
qual link?

l.otavio.albuquerque

unread,
Feb 3, 2025, 12:22:55 PMFeb 3
to python-brasil
Boa tarde. 
Ja conseguiu resolver?
Pergunto porque tive o mesmo problema e resolvi.
Se precisar estou a disposição 
Abraços 


--

Fernanda Beirao Sperling

unread,
Feb 3, 2025, 3:38:41 PMFeb 3
to python...@googlegroups.com
Olha, uma forma que já usei foi encontrar a exata palavra do botão e por para clicar no botão com a tal palavra. 
Fiz isso com “continuar lendo” em um site 

wesley gabriel

unread,
Feb 3, 2025, 7:07:11 PMFeb 3
to python...@googlegroups.com
Ainda não consegui resolver,  se alguém tiver alguma solução, poste aqui. 

Desde já agradeço 

Professor Blois

unread,
Feb 4, 2025, 4:08:57 AMFeb 4
to python...@googlegroups.com

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

# Inicializa o navegador
driver = webdriver.Chrome()

# Acesse a página desejada
driver.get("URL_DA_PAGINA")

# Aguarde até que o botão esteja visível e clique nele
try:
    botao_download = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Download')]"))
    )
    botao_download.click()
except Exception as e:
    print("Erro ao clicar no botão:", e)


Professor Blois

unread,
Feb 4, 2025, 4:10:42 AMFeb 4
to python...@googlegroups.com
# Mudar para o iframe onde está o botão
iframe = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, "iframe"))
)
driver.switch_to.frame(iframe)

# Agora tente encontrar e clicar no botão
botao_download = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Download')]"))
)
botao_download.click()

# Voltar ao contexto principal
driver.switch_to.default_content()

Professor Blois

unread,
Feb 4, 2025, 4:11:55 AMFeb 4
to python...@googlegroups.com
botao_download = driver.find_element(By.XPATH, "//button[contains(text(), 'Download')]")
driver.execute_script("arguments[0].click();", botao_download)
Reply all
Reply to author
Forward
0 new messages