#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Oct  9 12:48:56 2024

@author: ojacques
"""
#USO DO find_element, clica em copiar no chrome e ele perguntara o tipo
#element
#<a _ngcontent-ng-c3154355899="" role="button" target="_blank" class="px-6 py-2 text-xs font-bold text-center tracking-tight rounded-xl ng-star-inserted" style="background: #FDB035; color: #444444;" href="https://resultados.tse.jus.br/oficial/ele2024/arquivo-urna/452/dados/ms/90735/0018/0320/317533747256587166524c4273327839344e4b39415351575a455765473438385255726f6a5379713968303d/o00452ms9073500180320-rdv.dat"> Baixar o arquivo RDV </a>
#
#outerhtml
#<a _ngcontent-ng-c3154355899="" role="button" target="_blank" class="px-6 py-2 text-xs font-bold text-center tracking-tight rounded-xl ng-star-inserted" style="background: #FDB035; color: #444444;" href="https://resultados.tse.jus.br/oficial/ele2024/arquivo-urna/452/dados/ms/90735/0018/0320/317533747256587166524c4273327839344e4b39415351575a455765473438385255726f6a5379713968303d/o00452ms9073500180320-rdv.dat"> Baixar o arquivo RDV </a>
#
#selector
#body > app-root > ion-app > ion-router-outlet > ng-component > div > div.flex-1 > ng-component > app-dados-de-urna > app-rdv > app-centralizar > div.identificacao.mx-4\+safe.mt-5 > div.flex.justify-between.mb-8 > div > a
#JS Path
#
#document.querySelector("body > app-root > ion-app > ion-router-outlet > ng-component > div > div.flex-1 > ng-component > app-dados-de-urna > app-rdv > app-centralizar > div.identificacao.mx-4\\+safe.mt-5 > div.flex.justify-between.mb-8 > div > a")
#styles
#   
#xpath
#/html/body/app-root/ion-app/ion-router-outlet/ng-component/div/div[2]/ng-component/app-dados-de-urna/app-rdv/app-centralizar/div[2]/div[2]/div/a
#
#full xpath
#/html/body/app-root/ion-app/ion-router-outlet/ng-component/div/div[2]/ng-component/app-dados-de-urna/app-rdv/app-centralizar/div[2]/div[2]/div/a

#bibliotecas necessarias, caso nao tenha instalada em sua maquina basta executar os comandos (pip instal....impo

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

nav = webdriver.Chrome() #define o navegador
zonas=['0043']
urnas=[[1,433]]

#varre as zonas
for i,zona in enumerate(zonas):
    urnai=urnas[i][0]
    urnaf=urnas[i][1]
    
    #para cada zona, busca os arquivos das urnas (cada seção tem uma urna)
    for urna in range(urnai,urnaf+1):
        sec=f'{urna:04d}'
        url=f"https://resultados.tse.jus.br/oficial/app/index.html#/eleicao;e=e619;uf=ms;mu=90735;ufbu=ms;mubu=90735;zn={zona};se={sec};tipo=3/dados-de-urna/rdv"
        nav.get(url)
        #espera 5s para o navegador carregar a página
        nav.implicitly_wait(5)
        #Abre o modo de relatorio de votação (rdv)
        entrar = nav.find_element(By.XPATH,"/html/body/app-root/ion-app/ion-router-outlet/ng-component/div/div[2]/ng-component/app-dados-de-urna/app-rdv/app-centralizar/div[2]/div[1]/ul/li[2]/a")
        if entrar.is_displayed():
            entrar.click()
        nav.implicitly_wait(5)
        try:
            botao = nav.find_element(By.XPATH,'/html/body/app-root/ion-app/ion-router-outlet/ng-component/div/div[2]/ng-component/app-dados-de-urna/app-rdv/app-centralizar/div[2]/div[2]/div/a')
            botao.click() 
        except NoSuchElementException:
            pass
        finally: #esta parte é executada sempre mesmo que ocorra excessão
            nav.implicitly_wait(5)
        
nav.close()        
