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
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)
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