web_navigation.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from selenium.webdriver.common.by import By
  2. from selenium.webdriver.support.ui import WebDriverWait
  3. from selenium.webdriver.support import expected_conditions as EC
  4. def navigate_to_url(driver, url, clave, contraseña):
  5. formatted_url = f"https://{clave}:{contraseña}@{url}"
  6. driver.get(formatted_url)
  7. driver.get(f'https://{url}')
  8. # If dentro del código no existe un elemento con el id ctl00_lnkHome
  9. if not WebDriverWait(driver, 10).until(
  10. EC.presence_of_element_located((By.ID, "ctl00_lnkHome"))
  11. ):
  12. raise Exception("No se pudo iniciar sesión.")
  13. # wait until it appears this element.id = ctl00_contenedor_HistorialAlumno1_lblApPatAlumnoHP and get it
  14. def wait_for_element(driver, element_id):
  15. return WebDriverWait(driver, 10).until(
  16. EC.presence_of_element_located((By.ID, element_id))
  17. )
  18. servicio_social = wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_Header1_lblSS")
  19. alumno = {
  20. "apellido_paterno": wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_lblApPatAlumnoHP").text,
  21. "apellido_materno": wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_lblApMatAlumnoHP").text,
  22. "curp": wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_lblCURPAlumnoHP").text,
  23. "clave_carrera": int(wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_Header1_lblCveCarrera").text),
  24. "plan": int(wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_Header1_lblAlupla").text),
  25. "clave": int(wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_Header1_lblCveUlsa").text),
  26. "servicio_social": servicio_social.text == "Realizado",
  27. "nombre":wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_lblNombreAlumnoHP").text,
  28. "correo": wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_lblCorreoAlumnoHP").text,
  29. 'estatus' : wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_Header1_lblStat").text,
  30. "telefono": wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_lblTelefonoAlumnoHP").text,
  31. "semestre": int(wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_Header1_lblSem").text),
  32. "sexo": wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_lblSexoAlumnoHP").text,
  33. }
  34. click_element(driver, element_id="ctl00_contenedor_HistorialAlumno1_lblBtnSeccionHAcademico")
  35. historial_academico = driver.page_source
  36. alumno['promedio'] = float(wait_for_element(driver, "ctl00_contenedor_HistorialAlumno1_lblPromedioAlumnoHA").text)
  37. return alumno, historial_academico
  38. def click_element(driver, element_id):
  39. elemento = WebDriverWait(driver, 10).until(
  40. EC.presence_of_element_located((By.ID, element_id))
  41. )
  42. elemento.click()