Beispiel #1
0
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()
Beispiel #2
0
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)
Beispiel #3
0
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}'")
Beispiel #4
0
    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
Beispiel #5
0
    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