def find_switch_click(driver): for k, i in ELEMENTS.items(): if k == "NAME": for i_array in i: iframe = find_element.find_element(driver, i_array, k) driver.switch_to.frame(iframe) else: button = find_element.find_element(driver, i, k) driver.execute_script("arguments[0].click();", button)
def search_dossie(driver, sinistro): for k, e in ELEMENTS_DOSSIE.items(): element = find_element.find_element(driver, e, k) if k == "XPATH": driver.switch_to.frame(element) time.sleep(1) error = find_element.find_element(driver, '//*[@id="corpoMensagem"]', "XPATH") if ERROR_MESSAGES.count(error.text.upper().lstrip().rstrip()) > 0: print('Sinistro {} não foi encontrado'.format(sinistro)) return False else: driver.execute_script("arguments[0].click();", element) time.sleep(1) return True
def search_sinistro(driver): try: driver.switch_to.default_content() except TimeoutException as e: socket_windev.client_socket('TIM') exit() for k, e in ELEMENTS_SEARCH.items(): ELEMENTS_SEARCH[k] = find_element.find_element(driver, k, "NAME")
def login(driver): res = database_management.usuario_senha() url = res[2] ELEMENTS["webusrcod"] = res[0] ELEMENTS["webusrshn"] = res[1] try: driver.get(url) except TimeoutException as e: socket_windev.client_socket('TIM') exit() #Troca para o Iframe iframe = find_element.find_element(driver, "login", "NAME") driver.switch_to.frame(iframe) for e, t in ELEMENTS.items(): element = find_element.find_element(driver, e, "NAME") send_keys(element, t) driver.switch_to.default_content()
def check_if_exist_greater_than_one_client(driver): #Vai até aba Garantidos element = find_element.find_element(driver, '//*[@id="container-1"]/ul/li[2]/a/span/img', "XPATH") driver.execute_script("arguments[0].click();", element) time.sleep(0.5) try: qtd_paginas = driver.find_element(By.XPATH, '//*[@id="dossieRefPessPaginar"]/table[2]/tbody/tr/td[2]/strong') qtd_paginas = qtd_paginas.text.strip().split(" ")[-1] except NoSuchElementException as e: qtd_paginas = 1 return int(qtd_paginas)
def scrap_dados(sinistro, ano_sinistro, driver): cliente = { "endereco":'//*[@id="fragment-1"]/table[1]/tbody/tr[2]/td[2]/table/tbody/tr[5]/td[2]', "nome_garantidos":'//*[@id="garantidos"]/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[1]/td[2]', "cpf_garantidos":'//*[@id="garantidos"]/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[2]/td[2]', "indenizacao":'//*[@id="fragment-4"]/table[1]/tbody/tr[2]/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[1]/td[2]', "total_recuperado":'//*[@id="fragment-4"]/table[1]/tbody/tr[2]/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[2]/td[2]', "despesas":'//*[@id="fragment-4"]/table[1]/tbody/tr[2]/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[1]/td[4]', "saldo_a_ressarcir":'//*[@id="fragment-4"]/table[1]/tbody/tr[2]/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[2]/td[4]', "total_pago":'//*[@id="fragment-4"]/table[1]/tbody/tr[2]/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr[1]/td[6]'} elements = [ #Aba Garantidos '//*[@id="container-1"]/ul/li[2]/a/span/img', #Aba Pagamentos '//*[@id="container-1"]/ul/li[4]/a/span/img'] qtd_paginas = check_if_exist_greater_than_one_client(driver) for i in range(qtd_paginas): element = find_element.find_element(driver, '//*[@id="container-1"]/ul/li[1]/a/span/img', "XPATH") driver.execute_script("arguments[0].click();", element) time.sleep(1) global CLIENTE_DADOS for k, c in cliente.items(): if i > 0 and qtd_paginas > 1 and k != 'nome_garantidos' and k != 'cpf_garantidos': continue if k == 'nome_garantidos' or k == 'indenizacao': if k == 'nome_garantidos': element = find_element.find_element(driver, elements[0], "XPATH") elif k == 'indenizacao': element = find_element.find_element(driver, elements[1], "XPATH") driver.execute_script("arguments[0].click();", element) time.sleep(1) if qtd_paginas > 1 and i > 0 and k == 'nome_garantidos': button = find_element.find_element(driver, '//*[@id="dossieRefPessPaginar"]/table[2]/tbody/tr/td[2]/img[3]', "XPATH") driver.execute_script("arguments[0].click();", button) time.sleep(1) element = find_element.find_element(driver, cliente[k], "XPATH") CLIENTE_DADOS[k] = element.text.upper() database_management.insert_dados(CLIENTE_DADOS, sinistro, ano_sinistro)