def tag_wait(self, driver, tag): delay = 10 try: my_elem = WebDriverWait(driver, delay).until( expected_conditions.presence_of_element_located( (By.TAG_NAME, tag))) print(f"\033[1;31m{tag.upper()}\033[m is ready!") except TimeoutException: input("Loading took too much time!")
def change_ecac_client(self, CNPJ): """:return: vai até ao site de declaração do ECAC.""" driver = self.driver def elem_with_text(elem, searched): _tag = driver.find_element_by_xpath( f"//{elem}[contains(text(),'{searched.rstrip()}')]") return _tag self.tags_wait('html', 'span') sleep(5) # nextcl = elem_with_text("span", "Alterar perfil de acesso") # nextcl.click() btn_perfil = WebDriverWait(self.driver, 20).until( expected_conditions.presence_of_element_located( (By.ID, 'btnPerfil'))) self.click_ac_elementors(btn_perfil) # altera perfil e manda o cnpj self.tags_wait('label') cnpj = elem_with_text("label", "Procurador de pessoa jurídica - CNPJ") cnpj.click() sleep(.5) self.send_keys_anywhere(CNPJ) sleep(1) self.send_keys_anywhere(Keys.TAB) self.send_keys_anywhere(Keys.ENTER) sleep(1) # driver.find_element_by_class_name('access-button').click() # sleep(10) antigo = driver.current_url """I GOT IT""" # switch_to.frame... sleep(5) driver.get( 'https://sinac.cav.receita.fazenda.gov.br/simplesnacional/aplicacoes/atspo/pgdasd2018.app/' ) sleep(2.5) driver.get(antigo) driver.get( 'https://cav.receita.fazenda.gov.br/ecac/Aplicacao.aspx?id=10009&origem=menu' ) driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) sleep(2) while True: try: driver.find_element_by_xpath( '//span[@class="glyphicon glyphicon-off"]').click() driver.refresh() break except ElementClickInterceptedException: print( '---> PRESSIONE ESC PARA CONTINUAR <--- glyphicon-off intercepted' ) press_key_b4('esc') except NoSuchElementException: print( '---> PRESSIONE ESC PARA CONTINUAR NoSuchElement glyphicon-off' ) press_key_b4('esc') driver.get( 'https://sinac.cav.receita.fazenda.gov.br/simplesnacional/aplicacoes/atspo/pgdasd2018.app/' ) driver.implicitly_wait(5) break sleep(3) driver.switch_to.default_content() """I GOT IT""" # chegou em todo mundo... driver.get( 'https://sinac.cav.receita.fazenda.gov.br/simplesnacional/aplicacoes/atspo/pgdasd2018.app/' ) driver.implicitly_wait(5)
def __init__(self, compt=None): """ :param compt: from GUI # remember past_only arg from self.get_atual_competencia """ import pandas as pd from default.webdriver_utilities.pre_drivers import pgdas_driver # O vencimento DAS(seja pra qual for a compt) está certo, haja vista que se trata do mes atual sh_names = ['DEFIS'] sh_name = sh_names[0] if compt is None: compt = super().get_compt_only() excel_file_name = super().excel_file_path() COMPT = compt = f"DEFIS_{self.y()}" # transcrevendo compt para que não seja 02/2021 # excel_file_name = '/'.join(excel_file_name.split('/')[:-1]) excel_file_name = os.path.dirname(excel_file_name) excel_file_name += f'/DEFIS-anual.xlsx' pdExcelFile = pd.ExcelFile(excel_file_name) msh = pdExcelFile.parse(sheet_name=str(sh_name)) col_str_dic = {column: str for column in list(msh)} msh = pdExcelFile.parse(sheet_name=str(sh_name), dtype=col_str_dic) READ = self.le_excel_each_one(msh) self.after_READ = self.readnew_lista(READ, False) msh_socio = pdExcelFile.parse(sheet_name='Socios') col_str_dic = {column: str for column in list(msh_socio)} msh_socio = pdExcelFile.parse(sheet_name='Socios', dtype=col_str_dic) self.after_socio = self.readnew_lista( self.le_excel_each_one(msh_socio)) SK = list(self.after_socio.keys()) # ACHEI FINALMENTE O JEITO RESPONSIVO DE DECLARAR PRA NÃO FICAR TENDO QUE ESCREVER POR EXTENSO cont_soc = 0 for i, CNPJ in enumerate(self.after_READ['CNPJ']): _cliente = self.empresa_now = self.after_READ['Razão Social'][i] _ja_declared = self.after_READ['Declarado'][i].upper().strip() _cod_sim = self.after_READ['Código Simples'][i] _cpf = self.after_READ['CPF'][i] _cert_or_login = self.after_READ['CERTORLOGIN'][i] # Defis exclusivos _dirf = self.after_READ['DIRF'][i] # +2 Pois começa da linha 2, logo o excel está reconhendo isso como index while int(self.after_socio[SK[-4]][cont_soc]) - 2 != i: cont_soc += 1 __ate_soc = self.after_socio[SK[-3]][cont_soc] __ate_soc = int(__ate_soc) + cont_soc self.socios_now__cnpj = self.after_socio[SK[0]][cont_soc:__ate_soc] self.socios_now__cpf = self.after_socio[SK[1]][cont_soc:__ate_soc] self.socios_now__nome = self.after_socio[SK[2]][cont_soc:__ate_soc] self.socios_now__cota = self.after_socio[SK[3]][cont_soc:__ate_soc] self.socios_now__tipo = self.after_socio[SK[5]][cont_soc:__ate_soc] self.client_path = self.files_pathit( _cliente, COMPT, ) if _ja_declared not in ['S', 'OK', 'FORA']: print('-' * 60) # print(f'CNPJ: {CNPJ}, {CNPJ.strip()==self.socios_now__cnpj[0]}') self.the_print() __client_path = self.client_path self.driver = pgdas_driver(__client_path) now_process = subprocess.Popen(f'explorer {__client_path}') driver = self.driver super().__init__(driver) if _cert_or_login == 'certificado': self.loga_cert() # loga ECAC, Insere CNPJ self.change_ecac_client(CNPJ) self.current_url = driver.current_url self.opta_script() if self.m() == 12 else None else: self.loga_simples(CNPJ, _cpf, _cod_sim, _cliente) self.current_url = driver.current_url self.opta_script() if self.m() == 12 else None driver.get( 'https://www8.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATSPO/defis.app/entrada.aspx' ) while True: try: WebDriverWait(self.driver, 10).until( expected_conditions.presence_of_element_located( (By.TAG_NAME, 'input'))) my_radios_bt = driver.find_elements_by_name( 'ctl00$conteudo$AnoC') my_radios_bt[-2].click() driver.find_element_by_id( 'ctl00_conteudo_lnkContinuar').click() break except TimeoutException: driver.get( 'https://sinac.cav.receita.fazenda.gov.br/SimplesNacional/Aplicacoes/ATSPO/defis.app/entrada.aspx' ) (print('sleeping'), sleep(5)) self.send_keys_anywhere(Keys.TAB, 2) self.send_keys_anywhere(Keys.ENTER, 1) self.contains_text(str(self.y() - 1)).click() self.contains_text('Continuar').click() driver.implicitly_wait(10) self.send_keys_anywhere(Keys.TAB, 9) self.send_keys_anywhere(Keys.ENTER, 1) self.send_keys_anywhere(Keys.TAB, 2) self.send_keys_anywhere(Keys.ENTER, 1) WebDriverWait(self.driver, 5) try: self.send_keys_anywhere(Keys.TAB, 1) self.send_keys_anywhere(Keys.ENTER, 1) except UnexpectedAlertPresentException: pass else: # se 3 => De toda MP self.send_keys_anywhere(Keys.TAB, 2) self.send_keys_anywhere(Keys.ENTER) self.send_keys_anywhere(Keys.TAB, 1) # Informações econômicas e fiscais do estabelecimento ac = ActionChains(self.driver) for sdc in range(13): ac.send_keys('0') ac.send_keys(Keys.TAB) ac.perform() self.send_keys_anywhere(Keys.TAB, 11, pause=.1) self.send_keys_anywhere(Keys.RIGHT) self.send_keys_anywhere(Keys.TAB) self.send_keys_anywhere(Keys.RIGHT) self.send_keys_anywhere(Keys.TAB, 15, pause=.001) self.send_keys_anywhere(Keys.ENTER) # Chega até os campos padrão print('\033[1;31m DIGITE F8 p/ prosseguir \033[m') which_one = press_key_b4('f8') now_process.kill() print('-' * 30) print(f'already declared {_cliente}') print('-' * 30)
def __init__(self): from time import sleep front_compt = super().get_compt_only() fname = excel_file_name = super().excel_file_path() print('teste ginfess') json_file = self.load_json(fname) # input(len(after_READ['CNPJ'])) print('-='*30) print(f'{"Ginfess Download":^30}') # print(json_file) print('-='*30) for eid in json_file.keys(): print('~'*30) print(eid) print('~' * 30) # print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'*10) # print(list_with_dict) list_with_dic = json_file[eid] values = [v.values() for v in list_with_dic[:]] # padrão _cliente, _cnpj, _cpf, _cod_simples, _ja_declared = self.any_to_str(*values[:5]) print(_cliente, _cnpj, _cpf, _cod_simples, _ja_declared) _ginfess_cod = ''.join(values[-6]) _city = ''.join(values[-4]) print(_ginfess_cod, _city) # mesma coisa de self.any_to_str, só que ele aceita args desempacotados client_path = self.files_pathit(_cliente, front_compt) self.client_path = client_path # Checa se já existe certificado if _ginfess_cod.lower() == 'não há': # removi o ja_imported print(f'\033[1;31m o cliente {_cliente} não possui notas\n...(muito bom) O certificado anula o _ja_imported...\033[m') elif self.check_done(client_path, '.png', startswith='GINFESS'): # Checka o certificado ginfess, somente # if city in 'ABC': self.driver = ginfess_driver(self.client_path) super().__init__(self.driver) driver = self.driver id_url = self.id_url(_city) try: self.driver.get(id_url) except InvalidArgumentException: if int(eid)-1 == len(json_file.keys()): print('FIM') break #for if _city in ['A', 'B', 'C']: # links das cidades # driver.maximize_window() # ####################################################### self.ABC_ginfess(_cnpj, _ginfess_cod, _city) # ####################################################### try: # Find existent tags driver.implicitly_wait(5) self.tags_wait('table', 'tbody', 'tr', 'td') print('printscreen aqui') self.download(_city) driver.implicitly_wait(5) self.cexcel_from_html_above_v1(_cliente, self.ginfess_table_valores_html_code()) except IndexError: print('~' * 30) print('não emitiu nenhuma nota'.upper()) print('~' * 30) driver.save_screenshot(self.certif_feito(self.client_path, add='GINFESS')) # coloquei tudo no dele elif _city.upper() == 'TREM': driver.implicitly_wait(5) zero_um = _ginfess_cod.split('//') # ginfess login//senha self.tags_wait('html') self.tags_wait('body') while True: driver.implicitly_wait(5) ccm = driver.find_element_by_id('ccm') senha = driver.find_element_by_id('senha') confirma = driver.find_element_by_id('confirma') ccm.send_keys(zero_um[0]) for el in ccm, senha, confirma: el.clear() ccm.send_keys(zero_um[0]) senha.send_keys(zero_um[1]) trem_cod = self.captcha_hacking() confirma.send_keys(trem_cod) # driver.find_element_by_id('btnOk').click() if 'login.php' in driver.current_url: driver.refresh() driver.implicitly_wait(6) else: break print('break') driver.implicitly_wait(10) driver.execute_script("""function abre_arquivo(onde){ var iframe = document.getElementById("main"); iframe.src = onde; } """) driver.execute_script("abre_arquivo('dmm/_menuPeriodo.php');") driver.implicitly_wait(5) # self.tag_with_text('td', 'Movimento ').click() WebDriverWait(self.driver, 10).until(expected_conditions.presence_of_element_located((By.ID, 'main'))) iframe = driver.find_element_by_id('main') driver.switch_to_frame(iframe) driver.find_element_by_name('btnAlterar').click() driver.implicitly_wait(5) # handelling select front_compt = front_compt mes, ano = front_compt.split('-') driver.find_element_by_name('ano').clear() driver.find_element_by_name('ano').send_keys(ano) mes = self.nome_mes(int(mes)) driver.find_element_by_xpath(f"//select[@name='mes']/option[text()='{mes}']").click() # driver.find_element_by_name('ano').send_keys(ano) driver.implicitly_wait(5) driver.find_element_by_id('btnOk').click() driver.implicitly_wait(10) # iframe = driver.find_element_by_id('iframe') # driver.switch_to_frame(iframe) self.tag_with_text('td', 'Encerramento').click() # driver.switch_to_alert().accept() # driver.get('../fechamento/prestado.php') driver.find_element_by_xpath('//a[contains(@href,"../fechamento/prestado.php")]').click() driver.implicitly_wait(10) try: driver.find_element_by_id('btnSalvar').click() driver.implicitly_wait(5) driver.switch_to_alert().accept() driver.implicitly_wait(5) # driver.back() except (NoSuchElementException, NoAlertPresentException): print('Já encerrado') finally: driver.implicitly_wait(5) driver.back() driver.back() driver.execute_script("""function abre_arquivo(onde){ var iframe = document.getElementById("main"); iframe.src = onde; } """) driver.execute_script("abre_arquivo('dmm/_menuPeriodo.php');") iframe = driver.find_element_by_id('main') driver.switch_to_frame(iframe) driver.find_element_by_name('btnAlterar').click() driver.find_element_by_name('btnOk').click() # ############### validar driver.back() url = '/'.join(driver.current_url.split('/')[:-1]) driver.get(f'{url}/nfe/nfe_historico_exportacao.php') driver.implicitly_wait(3) self.tags_wait('html') self.tags_wait('body') driver.implicitly_wait(2) driver.find_element_by_id('todos').click() driver.find_element_by_id('btnExportar').click() driver.switch_to.alert.accept() self.download(_city) path_zip = client_path print(f'path_zip-> {path_zip}') self.unzipe_file(path_zip) driver.switch_to_default_content() driver.save_screenshot(self.certif_feito(self.client_path, add='GINFESS')) [(print(f'Sleeping before close {i}'), sleep(1)) for i in range(5, -1, -1)] driver.close()
def __init__(self): print('filespathteste') """ """ import pandas as pd from default.webdriver_utilities.pre_drivers import pgdas_driver # O vencimento DAS(seja pra qual for a compt) está certo, haja vista que se trata do mes atual sh_names = ['_Dívidas'] compt = super().get_compt_only() excel_file_name = super().excel_file_path() for sh_name in sh_names: # agora eu posso fazer downloalds sem me preocupar tendo a variável path mshExcelFile = pd.ExcelFile(excel_file_name) msh = mshExcelFile.parse(sheet_name=str(sh_name)) col_str_dic = {column: str for column in list(msh)} msh = mshExcelFile.parse(sheet_name=str(sh_name), dtype=col_str_dic) READ = self.le_excel_each_one(msh) self.after_READ = self.readnew_lista(READ, False) after_READ = self.after_READ for i, CNPJ in enumerate(after_READ['CNPJ']): CLIENTE = after_READ['Razão Social'][i] JA_DECLARED = after_READ['Declarado'][i] simples_or_ativa = after_READ['tipo'][i] if JA_DECLARED not in ['S', 'OK', 'FORA']: self.client_path = self.files_pathit( 'Dívidas_Simples_' + CLIENTE, compt) __client_path = self.client_path self.driver = pgdas_driver(__client_path) super().__init__(self.driver) driver = self.driver self.loga_cert() self.change_ecac_client(CNPJ) driver.find_element_by_id('linkHome').click() if simples_or_ativa == 'simples nacional': driver.find_element_by_link_text( 'Simples Nacional').click() driver.find_element_by_link_text( 'Solicitar, acompanhar e emitir DAS de parcelamento' ).click() driver.implicitly_wait(10) driver.switch_to.frame( driver.find_element_by_id('frmApp')) empel = driver.find_element_by_id( 'ctl00_contentPlaceH_linkButtonEmitirDAS') empel.click() WebDriverWait(self.driver, 20).until( expected_conditions.presence_of_element_located( (By.XPATH, '//input[@value="Continuar"]'))).click() imprimires = WebDriverWait(self.driver, 20).until( expected_conditions. presence_of_all_elements_located( (By.LINK_TEXT, 'Imprimir'))) for imprimir in imprimires: imprimir.click() # Imprimir driver.switch_to.default_content() elif simples_or_ativa == 'dívida ativa': driver.find_element_by_link_text( 'Dívida Ativa da União').click() driver.find_element_by_link_text( 'Débitos Inscritos em Dívida Ativa da União' ).click() driver.switch_to.window(driver.window_handles[1]) driver.implicitly_wait(10) sispar_url = f"{'/'.join(driver.current_url.split('/')[:-1])}/sispar" driver.get(sispar_url) try: WebDriverWait(self.driver, 10).until( expected_conditions. presence_of_element_located( (By.TAG_NAME, 'button'))) self.tag_with_text('button', 'Acessar o SISPAR').click() except NoSuchElementException: WebDriverWait(self.driver, 10).until( expected_conditions. presence_of_element_located( (By.TAG_NAME, 'button'))) self.tag_with_text('button', 'Acessar').click() # provavelmente uma mudança no sistema mas vou validar # WebDriverWait(self.driver, 10).until(expected_conditions.new_window_is_opened(driver.window_handles)) WebDriverWait(self.driver, 10).until( expected_conditions.number_of_windows_to_be(3)) driver.switch_to.window(driver.window_handles[2]) driver.execute_script( "PrimeFaces.addSubmitParam('cabecalho',{'cabecalho:j_idt45':'cabecalho:j_idt45'}).submit('cabecalho');" ) self.click_elements_by_tt('DEFERIDO E CONSOLIDADO') sleep(1) WebDriverWait(self.driver, 20).until( expected_conditions.presence_of_element_located( (By.ID, 'formListaDarf:idbtnDarf'))).click() WebDriverWait(self.driver, 20).until( expected_conditions.presence_of_element_located( (By.TAG_NAME, 'table'))) compt_dividas_ativas = f'{self.m():02d}/{self.y()}' print(compt_dividas_ativas) sleep(7) dris = driver.find_elements_by_css_selector( ".colunaAlinhaCentro") elemitidos = driver.find_elements_by_css_selector( f"[title*='Já emitido']") for el in elemitidos: el.click() sleep(.5) self.send_keys_anywhere(Keys.ENTER) print('breakou, baixou JÁ EMITIDOS') self.contains_title('Não emitido').click() sleep(.5) self.send_keys_anywhere(Keys.ENTER) self.click_ac_elementors( WebDriverWait(self.driver, 20).until( expected_conditions. presence_of_element_located(( By.ID, 'formResumoParcelamentoDarf:dlgInformacoesEmissaoDarf' )))) self.send_keys_anywhere(Keys.TAB) self.send_keys_anywhere(Keys.TAB) self.send_keys_anywhere(Keys.ENTER) self.click_ac_elementors( WebDriverWait(self.driver, 20).until( expected_conditions. presence_of_element_located(( By.ID, 'formResumoParcelamentoDarf:emitirDarf')))) WebDriverWait(self.driver, 5) else: print('ACABOU, break') break