def main(driver: WebDriver = None): try: if not driver: options = EdgeOptions() options.use_chromium = True options.add_argument("-inprivate") driver = Edge(executable_path=EDGE_DRIVER_PATH, options=options) driver.get(url_encode()) wait = WebDriverWait(driver, 30, 1) # elem_vote = driver.find_element(By.XPATH, "//a[text()='投票']") # elem_vote = wait.until(EC.presence_of_element_located((By.XPATH, r"//a[text()='投票']"))) # elem_vote.click() callback = step() elem = wait.until(callback) # elem_vote_options = wait.until(get_elem_vote_options) # elem_vote_options = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "//div/div/label[@class='label']"))) # elem_vote_options = elem_vote.find_elements(By.XPATH, "//div/div/label[@class='label']") elem = wait.until(callback) # map(lambda e: e.click(), elem_vote_options) # elem_vote_btn = wait.until(EC.element_to_be_clickable((By.XPATH, r"//a[text()='確認送出']"))) # 1elem_vote_btn = driver.find_element(By.XPATH, r"//a[text()='確認送出']") # elem_vote_btn.click() elem = wait.until(callback) except Exception as e: traceback.print_exc(4, sys.stderr) finally: driver.delete_all_cookies() driver.refresh() main(driver) driver.quit()
def clear_driver_cookies(driver: WebDriver): try: cookies = driver.get_cookies() logging.debug("COOKIES: %s", cookies) driver.delete_all_cookies() logging.debug("Successfully cleared cookies") cookies = driver.get_cookies() logging.debug("Driver cookies after clearing them: %s", cookies) except WebDriverException as ex: logging.error("Failed to clear cookies: '%s'", ex.msg)
def clear_driver_cookies(driver: WebDriver, *, log_cleanup: bool = False): if not driver: logging.warning(f"Can't clear cookies from an empty driver!") return try: if log_cleanup: logging.debug(f"COOKIES: {driver.get_cookies()}") driver.delete_all_cookies() logging.debug("Successfully cleared cookies") if log_cleanup: logging.debug(f"Driver cookies after clearing them: {driver.get_cookies()}") except WebDriverException as ex: logging.error(f"Failed to clear cookies: '{ex.msg}'")
def intento_ingreso_nuevamente_al_portal(result: ResultStep, correo: Correo, driver: WebDriver, numero_de_intentos_por_ingresar: int = 3, step_evaluacion: str = ''): for intento in range(numero_de_intentos_por_ingresar): try: boton_inicio_sesion = None driver.delete_all_cookies() driver.refresh() driver.get(correo.url) WebDriverWait(driver, 18).until(EC.visibility_of_element_located((By.ID, 'username'))) input_usuario = driver.find_element_by_id('username') input_password = driver.find_element_by_id('password') input_usuario.clear() input_password.clear() if ValidacionesHTML.verificar_elemento_encontrado_por_id(driver, 'chkBsc'): check_casilla_owa_2010_version_ligera = driver.find_element_by_id('chkBsc') check_casilla_owa_2010_version_ligera.click() if ValidacionesHTML.verificar_elemento_encontrado_por_xpath(driver, "//input[@type='submit'][@class='btn']"): boton_inicio_sesion = driver.find_element_by_xpath("//input[@type='submit'][@class='btn']") elif ValidacionesHTML.verificar_elemento_encontrado_por_xpath(driver, "//div[@class='signinbutton']"): boton_inicio_sesion = driver.find_element_by_xpath("//div[@class='signinbutton']") # num_random = randint(1,1000) # driver.save_screenshot('./Logs/{}_0.png'.format(num_random)) time.sleep(1) input_usuario.send_keys(correo.correo) # driver.save_screenshot('./Logs/{}_1.png'.format(num_random)) time.sleep(1) input_password.send_keys(correo.password) # driver.save_screenshot('./Logs/{}_2.png'.format(num_random)) time.sleep(1) boton_inicio_sesion.click() # driver.save_screenshot('./Logs/{}_5.png'.format(num_random)) time.sleep(10) # driver.save_screenshot('./Logs/{}_6.png'.format(num_random)) # se verifica si encuentra al menos las carpetas en la bandeja if ValidacionesHTML.verificar_elemento_encontrado_por_clase_js(driver, "_n_C4") or \ ValidacionesHTML.verificar_elemento_encontrado_por_clase_js(driver, "_n_Z6") or \ ValidacionesHTML.verificar_elemento_encontrado_por_xpath(driver, "//a[@name='lnkFldr']"): result.validacion_correcta = True result.mensaje_error = 'Se ingresa nuevamente de manera correcta al buzon de entrada de la ' \ 'cuenta {}'.format(correo.correo) break elif ValidacionesHTML.verificar_error_plataforma(driver): msg_error = ValidacionesHTML.obtener_mensaje_error_plataforma(driver) result.validacion_correcta = False result.mensaje_error = 'Ingreso al buzon de entrada no exitosa, se presenta el siguiente error ' \ 'dentro de la plataforma Exchange OWA: {}'.format(msg_error) else: result.validacion_correcta = False result.mensaje_error = 'Ingreso al buzon de entrada no exitosa. Se intento ingresar a la ' \ 'bandeja de entrada de la plataforma Exchange OWA, se presenta problemas de carga de pagina' except SelExcept.NoSuchElementException as e: result.validacion_correcta = False result.mensaje_error = 'No fue posible ingresar nuevamente a la bandeja de entrada. No se ' \ 'localizaron correctamente los inputs para el ingreso de usuario y password' except SelExcept.TimeoutException as e: result.validacion_correcta = False result.mensaje_error = 'No fue posible ingresar nuevamente a la bandeja de entrada. Se tiene un ' \ 'problema de tiempo de carga en la pagina' return result
def run(driver: WebDriver): nonlocal no if not no: elem = driver.find_element(By.XPATH, "//a[text()='投票']") if not elem: elem = driver.find_element(By.XPATH, "//a[text()='今日已投票']") if elem: driver.delete_all_cookies() driver.refresh() return None elem.click() elem_container = driver.find_element_by_class_name( "modal__container") if elem_container.is_displayed(): no += 1 return elem_container elif no == 1: elem_vote_options = driver.find_elements( By.XPATH, "//div/div/label[@class='label']") if not elem_vote_options: return None for elem in elem_vote_options: if not elem.is_displayed(): break elem.click() for_input = driver.find_element_by_id( elem.get_attribute("for")) if not for_input.is_selected(): break else: no += 1 return elem_vote_options if no == 2: driver.add_cookie({ "name": "uuid", "value": generate_uuid(), "domain": ".businessweekly.com.tw", "size": 40, }) elem = None try: elem = driver.find_element(By.XPATH, r"//a[text()='確認送出']") if elem and elem.is_enabled(): elem.click() except Exception as e: if driver.find_element_by_id("gdrp-el"): driver.execute_script( """document.getElementById("gdrp-el").remove();""") finally: elem_container = driver.find_element_by_class_name( "modal__container") if elem_container and elem_container.find_element( By.XPATH, "//img[@alt='投票完成']"): no += 1 return True if "投票完成" in driver.page_source: no += 1 return True return None