def extraer_evidencias_lista_cursos(driver, cursos, lista, ruta, terminados=False): for elemento in lista: curso = cursos[elemento] nombre = get_nombre_curso(curso) fecha = get_fecha_curso(curso) salidas.imprimir_salida('Extrayendo datos de curso: %s' % nombre, 1) salida0 = almacenamiento.crear_ruta(ruta, fecha) salida = almacenamiento.crear_ruta(salida0, nombre) extraer_evidencias_curso(driver, cursos, elemento, salida, terminados) driver.get(URL_MAIN) try: WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'lblTotalCursos'))) time.sleep(1) except: raise excepciones.CursosException( 'No se pudo refrescar página de cursos') if terminados: ir_a_cursos_terminados(driver) cursos = regresar_cursos(driver) # evitar stale
def ir_a_cursos_vigentes(driver): if not driver.current_url == URL_MAIN: driver.get(URL_MAIN) try: WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'lblTotalCursos'))) time.sleep(1) except Exception as err: raise excepciones.CursosException( 'No se pudo regresar a los cursos vigentes') else: ciclar_cursos_hasta_vigentes(driver)
def ciclar_cursos_hasta(driver, etiqueta): tipo_listado = driver.find_element_by_id('lbltipoCurso') if not tipo_listado.text == etiqueta: izquierda = driver.find_element_by_id('flechaIzq') while not tipo_listado.text == etiqueta: anterior = tipo_listado.text izquierda.click() try: WebDriverWait( driver, 10).until(lambda useless: anterior != tipo_listado.text) except: raise excepciones.CursosException( 'No se pudo ciclar los tipos de cursos')
def regresar_a_curso(driver, pk, terminados=False): driver.back() # siempre que se regresa eminus deselcciona el curso driver.refresh() assert driver.current_url == URL_MAIN try: WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'lblTotalCursos'))) time.sleep(1) except: raise excepciones.CursosException('No se puede regresar al curso') if terminados: ir_a_cursos_terminados(driver) cursos = regresar_cursos(driver) # es necesario para evitar stale curso = cursos[pk] ir_a_curso(driver, curso)
def extraer_evidencias_curso(driver, cursos, pk, ruta, terminados=False): if not pk in cursos.keys(): raise excepciones.CursosException('No existe el curso %s' % pk) curso = cursos[pk] ir_a_curso(driver, curso) actividades.ir_a_actividades(driver) salida = almacenamiento.crear_ruta(ruta, 'actividades') actividades.extraer_respuestas_actividades_curso(driver, salida) regresar_a_curso(driver, pk, terminados) evaluaciones.ir_a_evaluaciones(driver) salida = almacenamiento.crear_ruta(ruta, 'evaluaciones') evaluaciones.extraer_respuestas_evaluaciones_curso(driver, salida) regresar_a_curso(driver, pk, terminados)
def extraer_evidencias_curso(driver, cursos, pk, ruta, terminados=False): if not pk in cursos.keys(): raise excepciones.CursosException('No existe el curso %s' % pk) curso = cursos[pk] ir_a_curso(driver, curso) actividades.ir_a_actividades(driver) salida = almacenamiento.crear_ruta(ruta, 'actividades') actividades.extraer_respuestas_actividades_curso(driver, salida) regresar_a_curso(driver, pk, terminados) evaluaciones.ir_a_evaluaciones(driver) salida = almacenamiento.crear_ruta(ruta, 'evaluaciones') evaluaciones.extraer_respuestas_evaluaciones_curso(driver, salida) regresar_a_curso(driver, pk, terminados) nombre_curso = ruta.split('/')[-1] os.system( f'cd "{ruta}"; zip -r "{nombre_curso}.zip" "actividades" "evaluaciones"; rm -r actividades; rm -r evaluaciones' )
def esperar_carga_curso(driver, curso): try: WebDriverWait(driver, 10).until(lambda useless: esta_seleccionado_curso(curso)) except: raise excepciones.CursosException('No se pudo tener acceso al curso')