コード例 #1
0
def preencheDadosSER2(browser, cnpj, lista):
    
    try:
        browser.get('https://www.receita.pb.gov.br/ser/servirtual/documentos-fiscais/nfc-e/consulta-por-emitente')
        try:    
            wait(browser, 2).until(EC.frame_to_be_available_and_switch_to_it("iframe"))
            element = browser.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/table/tbody/tr[2]/td[2]/input[1]')
            element.clear()
            element.send_keys(getData.get_dataInicial(1))

            element = browser.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/table/tbody/tr[2]/td[2]/input[2]')
            element.clear()
            element.send_keys(getData.get_dataFinal(1))
            browser.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/table/tbody/tr[8]/td/table/tbody/tr[1]/td[2]/select/option[2]').click()

            wait(browser, 1).until(EC.frame_to_be_available_and_switch_to_it("cmpDest"))
            browser.find_element_by_xpath('/html/body/div/table/tbody/tr/td/form/table/tbody/tr[1]/td[2]/input').send_keys('123')
            browser.find_element_by_xpath('/html/body/div/table/tbody/tr/td/form/table/tbody/tr[1]/td[2]/input').clear()
            browser.switch_to.default_content()

            wait(browser, 1).until(EC.frame_to_be_available_and_switch_to_it("iframe"))
            wait(browser, 1).until(EC.frame_to_be_available_and_switch_to_it("cmpEmit"))
            browser.find_element_by_xpath('/html/body/div/table/tbody/tr/td/form/table/tbody/tr[1]/td[2]/input').clear()
            time.sleep(1)
            browser.find_element_by_xpath('/html/body/div/table/tbody/tr/td/form/table/tbody/tr[2]/td[2]/input[1]').clear()
            
            browser.find_element_by_xpath('/html/body/div/table/tbody/tr/td/form/table/tbody/tr[1]/td[2]/input').send_keys(lista[cnpj])
            time.sleep(2)
            browser.find_element_by_xpath('/html/body/div/table/tbody/tr/td/form/table/tbody/tr[1]/td[3]/input').click()
            browser.switch_to.default_content()
            
            wait(browser, 2).until(EC.frame_to_be_available_and_switch_to_it("iframe"))
            
            browser.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/table/tbody/tr[12]/td/select/option[3]').click()
            browser.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/table/tbody/tr[12]/td/input[3]').click()

            time.sleep(3)
            try:
                texto = browser.switch_to_alert().getText()
                if(texto == 'Necessário informar o Emitente ou o Destinatário.'):
                    browser.switch_to_alert().accept()
                    time.sleep(1)
                    browser.switch_to.default_content()
                    wait(browser, 1).until(EC.frame_to_be_available_and_switch_to_it("iframe"))
                    browser.find_element_by_xpath('/html/body/div/table/tbody/tr/td/form/table/tbody/tr[1]/td[3]/input').click() #Pesquisa
                    time.sleep(5) 
                    browser.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/table/tbody/tr[13]/td/input[4]').click() #Consultar
                    time.sleep(3)
            except:
                pass
            
            x = 0
            while (True):
                try:
                    try:
                        browser.find_element_by_xpath('/html/body/table/tbody/tr[2]/td/form/table/tbody/tr[13]/td/b/i/a')
                        browser.switch_to.default_content()
                        getSERXML2(browser, cnpj, lista)
                        break
                    except:
                        browser.switch_to_alert().accept()
                        caminhos.addCaminhoNFC('vazio')    
                        print("Sem acesso a essa área")
                        break
                except:
                    x = x + 1
                    time.sleep(2)
                    if(x == 5):
                        caminhos.addCaminhoNFC('vazio')
                        print("Não era um alerta")
                        break
        except:
            caminhos.addCaminhoNFC('vazio')
            print('Erro no preenchimento dos dados')
    except:
        caminhos.addCaminhoNFC('vazio')
        print('Erro no acesso a página')
        conteudo = "Sem acesso a página dos Documentos fiscais de " + lista[cnpj] + " ou a internet\n"
        relatorio.relatorioSER(conteudo)

    return cnpj
コード例 #2
0
def getSERXML2(browser, cnpj, lista):
    start = True #Controla o acesso ao segundo while
    x = True #Controla o acesso ao terceiro while
    cont = 0

    while(True):
        try:
            browser.get('https://www4.receita.pb.gov.br/atf/seg/SEGf_MinhasMensagens.do')
            time.sleep(4)
            break
        except:
            cont = cont + 1
            if cont == 3:
                start = False
                x = False
                break
            print('Sem acesso a https://www4.receita.pb.gov.br/atf/seg/SEGf_MinhasMensagens.do')

    ## Clica na priemira mensagem ##
    while(start):
        try:
            browser.find_element_by_css_selector("body > form > div > table > tbody > tr:nth-child(3) > td:nth-child(4) > a").click()
            time.sleep(2)
            break
        except:
            pass
        
    
    ## Clica na mensagem do meio ##
    pare = 0
    try:
        browser.find_element_by_xpath('/html/body/form/div/table/tbody/tr[5]/td[3]/a/img')
    except:
        try:
            browser.find_element_by_xpath('/html/body/form/div/table/tbody/tr[3]/td[3]')
            browser.find_element_by_xpath('/html/body/form/div/table/tbody/tr[5]/td[3]')
            browser.find_element_by_xpath('/html/body/form/div/table/tbody/tr[7]/td[3]')
            browser.find_element_by_xpath('/html/body/form/div/table/tbody/tr[9]/td[3]')
            pare = 17
        except:
            pass
    
    while (x):
        try:
            try:
                browser.find_element_by_xpath('/html/body/form/div/table/tbody/tr[5]/td[3]/a/img') #garante que o clipe está lá
                browser.find_element_by_css_selector("body > form > div > table > tbody > tr:nth-child(5) > td:nth-child(4) > a").click()
                time.sleep(2)
                x = False
            except:
                pare = pare + 1
                if pare == 18:
                    break
                time.sleep(2)
                browser.find_element_by_name("btnNovas").click()
                #browser.find_element_by_xpath('/html/body/form/div/table/tbody/tr[12]/td/input[2]').click()
                time.sleep(10)
                print("mais uma")
        except:
            print("Não foi possível atualizar")
            time.sleep(1)
            break
    
    ## Faz o Download do XML ##
    
    try:
        download = browser.find_element_by_css_selector("body > table > tbody > tr:nth-child(2) > td > form > table > tbody > tr:nth-child(8) > td > a")
        download.click()
        time.sleep(2)
        caminho = caminhos.getCaminho(0)
        destino = caminho + getData.get_dataInicial(3) + '/' + lista[cnpj] + '/NFCe'
        time.sleep(3)
        extrairArq.extrair(caminho, destino)
        caminhos.addCaminhoNFC(destino)
        print("Download e extração dos arquivos de " + lista[cnpj] +" realizada")
        conteudo = "Download e extração dos arquivos de " + lista[cnpj] +" realizada\n"
        relatorio.relatorioSER(conteudo)
    except:
        caminhos.addCaminhoNFC('vazio')
        print('impossibilitado de fazer o download')
        conteudo = "impossibilitado de fazer o download de " + lista[cnpj] + "\n"
        relatorio.relatorioSER(conteudo)
コード例 #3
0
def servirtual(browser, lista, tipoDeNota, posicaoAtual, stop):
    execute = posicaoAtual #Controla as execuções
    login = posicaoAtual #Garante que o login só será feito uma vez a cada 15 minutos 
    parada = len(lista) #limite temporário de execução
    cnpj = posicaoAtual
    start = True
    
    while(execute < parada):
        if execute == parada:
            break
        #try:
            ## Vai para pagina e o iframe desejado da página ##
        if login == posicaoAtual:
            try:
                browser.get('https://www.receita.pb.gov.br/ser/servirtual')
                browser.maximize_window()
            except:
                print("Sem acesso a página principal ou a internet")
                conteudo = "Sem acesso a página principal ou a internet\n"
                relatorio.relatorioSER(conteudo)
                start = False
            inicio = 0
            while(start):
                try:
                    wait(browser, 2).until(EC.frame_to_be_available_and_switch_to_it("acessoATF"))
                    time.sleep(2)
                    #browser.find_element_by_css_selector('#SERlogin > form > div:nth-child(12) > div > a').click() #Acessa o certificado Digital
                    acesso = caminhos.usuarioSenha()
                    if(stop < parada):
                        browser.find_element_by_xpath('//*[@id="form-cblogin-username"]/div/input').send_keys(acesso[0])
                        time.sleep(2)
                        browser.find_element_by_xpath('//*[@id="form-cblogin-password"]/div[1]/input').send_keys(acesso[1])
                        time.sleep(1)
                        browser.find_element_by_xpath('//*[@id="form-cblogin-password"]/div[2]/input[2]').click()
                        browser.implicitly_wait(2)
                        login = login + 1
                        start = False
                    else:
                        browser.find_element_by_xpath('//*[@id="form-cblogin-username"]/div/input').send_keys(acesso[3])
                        time.sleep(2)
                        browser.find_element_by_xpath('//*[@id="form-cblogin-password"]/div[1]/input').send_keys(acesso[4])
                        time.sleep(1)
                        browser.find_element_by_xpath('//*[@id="form-cblogin-password"]/div[2]/input[2]').click()
                        browser.implicitly_wait(2)
                        login = login + 1
                        start = False
                except:
                    time.sleep(1)
                    if(inicio == 29):
                        print("Sem acesso a página principal ou a internet")
                        conteudo = "Sem acesso a página principal ou a internet\n"
                        relatorio.relatorioSER(conteudo)
                        break
                    inicio = inicio + 1
            
            if(inicio == 29):
                break
            
            browser.switch_to.default_content()
            time.sleep(3)
            

        time.sleep(3)
        try:
            if cnpj > 0:
                browser.get('https://www.receita.pb.gov.br/ser/servirtual')
        except:
            print("Sem acesso a página principal ou a internet")
            conteudo = "Sem acesso a página principal ou a internet\n"
            relatorio.relatorioSER(conteudo)
        if(tipoDeNota == 'NFe'):
            cnpj = preencheDadosSER1(browser, cnpj, lista)
            preencheDadosSERentrada(browser, cnpj, lista)
        elif(tipoDeNota == 'NFC'):
            cnpj = preencheDadosSER2(browser, cnpj, lista) 
        
        cnpj = cnpj + 1
        browser.switch_to.default_content()
        execute = execute + 1
        time.sleep(3)
        if(execute == stop):
            break
        if cnpj == parada:
            break
    
    browser.close()
    return lista