CursosEmpresasBlogLiveConfPrecios

Typos

Clase 19 de 24 • Curso de Introducción a Selenium con Python

Clase anteriorSiguiente clase

Contenido del curso

Conocer el ecosistema de Selenium

  • 1
    Por qué aprender Selenium y qué verás

    Por qué aprender Selenium y qué verás

    03:15 min
  • 2
    Historia de Selenium

    Historia de Selenium

    09:05 min
  • 3
    Otras herramientas de testing y automatización

    Otras herramientas de testing y automatización

    03:40 min

Preparar entorno de trabajo

  • 4
    Configurar entorno de trabajo

    Configurar entorno de trabajo

    01:43 min
  • 5

    Compatibilidad con Python 3.9 y aprendiendo a utilizar múltiples versiones

    01:44 min
  • 6
    ¡Hola, mundo!

    ¡Hola, mundo!

    11:51 min

Utilizar comandos básicos

  • 7
    Encontrar elementos con find_element

    Encontrar elementos con find_element

    15:23 min
  • 8
    Preparar assertions y test suites

    Preparar assertions y test suites

    13:50 min
  • 9

    Entender las clases WebDriver y WebElement

    01:18 min

Interactuar con elementos

  • 10
    Manejar form, textbox, checkbox y radio button

    Manejar form, textbox, checkbox y radio button

    13:37 min
  • 11
    Manejar dropdown y listas

    Manejar dropdown y listas

    07:42 min
  • 12
    Manejar alert y pop-up

    Manejar alert y pop-up

    06:05 min
  • 13
    Automatizar navegación

    Automatizar navegación

    03:54 min

Sincronizar pruebas

  • 14
    Demora implícita y explícita

    Demora implícita y explícita

    08:38 min
  • 15

    Condicionales esperadas

    00:44 min

Retos

  • 16
    Agregar y eliminar elementos

    Agregar y eliminar elementos

    09:16 min
  • 17
    Elementos dinámicos

    Elementos dinámicos

    06:46 min
  • 18
    Controles dinámicos

    Controles dinámicos

    08:01 min
  • 19
    Typos

    Typos

    Viendo ahora
  • 20
    Ordenar tablas

    Ordenar tablas

    07:12 min

Metodologías de Trabajo

  • 21
    Data Driven Testing (DDT)

    Data Driven Testing (DDT)

    13:35 min
  • 22
    Page Object Model (POM)

    Page Object Model (POM)

    10:35 min

Cierre del curso

  • 23
    Realizar una prueba técnica

    Realizar una prueba técnica

    11:33 min
  • 24
    Conclusiones

    Conclusiones

    01:43 min
  • Tomar el examen del curso
    • Matias Gabriel Pierri

      Matias Gabriel Pierri

      student•
      hace 5 años

      Creo que hay un error en la logica al poner el tries += 1 en if text_to_check = correct_text porque solo va a sumar un intento cuando se encuentra el texto correcto.

      Al correr el script varias veces la cantidad de intentos siempre da fijo el resultado 2 porque empieza en 1 y suma 1 cuando lo encuentra aunque esto tomo 5 intentos de refrescar la pagina

      Yo lo deje de esta forma

      while text_to_check != correct_text: paragraph_to_check = driver.find_element_by_css_selector("#content > div > p:nth- child(3)") text_to_check = paragraph_to_check.text driver.refresh() tries += 1
        Junior Erny Aguayo Cuadros

        Junior Erny Aguayo Cuadros

        student•
        hace 5 años

        Lo que dices es correcto!

        Jonathan Mardones Guzmán

        Jonathan Mardones Guzmán

        student•
        hace 5 años

        Es correcto lo que planteas, aunque me parece que, con el código como lo tienes, cuenta una vez demás. Lo pongo con un ejemplo para que se entienda mejor la idea, y aunque es algo sencillo, lo escribo con lujo de detalles para que los demás lo consideren al ponerlo en su código (favor, corregir si estoy mal):

        Supongamos que la primera vez que el bot ingresa a la página se encuentra con un typo, y la segunda vez encuentra el texto correcto, ¿qué contaría el bot?

        Lo que pasaría es que, como la primera vez encuentra un typo, el script hace text_to_check != correct_text. Lo que hace a continuación es entrar al while y redefinir text_to_check tal cual estaba, porque no han habido cambios en la página. A continuación, refrezca la página y después suma 1 a tries (tenemos entonces que tries = 2). Supusimos inicialmente que en esta ocasión, el texto sí es correcto, ¡pero aún no se actualiza text_to_check! así que el bloque while se vuelve a ejecutar y ahora sí, actualizamos text_to_check a correct_text, refrezcamos la página nuevamente y sumamos nuevamente 1 a tries, es decir, ahora tries = 3. Como text_to_check == correct_text, no se ejecuta el bloque while y nos retorna que lo hizo en 3 intentos, cuando realmente sólo fueron 2.

        La solución a esto es que lo primero que haga el ciclo while sea driver.refresh():

        while text_to_check != correct_text: driver.refresh() text_to_check = driver.find_element_by_css_selector("#content > div > p:nth-child(3)").text tries += 1

        PD: Me di cuenta del error en la clase gracias a tu comentario, saludos :D

      Royer Guerrero Pinilla

      Royer Guerrero Pinilla

      student•
      hace 5 años

      El video no me carga, es solo a mi?

        Esteban parra

        Esteban parra

        student•
        hace 5 años

        me ocurre lo mismo, no carga el video

        Royer Guerrero Pinilla

        Royer Guerrero Pinilla

        student•
        hace 5 años

        Yo probé en Firefox y tampoco 🤔

      Alexis Loya García

      Alexis Loya García

      student•
      hace 5 años

      Al final me quedó así

      import unittest from selenium import webdriver class Typos(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome( executable_path=r'C:/Users/student/driver/chromedriver.exe') driver = self.driver driver.get("...") driver.find_element_by_link_text("Typos").click() def test_find_typo(self): driver = self.driver text_to_check = driver.find_element_by_css_selector('#content > div > p:nth-child(3)').text tries = 1 correct_text = "Sometimes you'll see a typo, other times you won't." while text_to_check != correct_text: text_to_check = driver.find_element_by_css_selector('#content > div > p:nth-child(3)').text tries += 1 driver.refresh() print(f'It took {tries} tries to find the typo') def tearDown(self): self.driver.close() if __name__ == "__main__": unittest.main(verbosity = 2)
        Carlos Andres Ocampo Pabon

        Carlos Andres Ocampo Pabon

        student•
        hace 5 años

        A mí también me pareció más fácil con un solo while

      Juan Jacobo Arias Ramirez

      Juan Jacobo Arias Ramirez

      student•
      hace 5 años

      Le hice una modificación para quitar un ciclo while, en el lugar de los dos while lo dejé así

      while not found: if text_to_check == correct_text: driver.refresh() found = True else: paragraph_to_check = driver.find_element_by_css_selector('#content > div > p:nth-child(3)') text_to_check = paragraph_to_check.text tries +=1 driver.refresh()

      Además de cambiar el tries+=1 cuando son distintos, ya que dejandolo donde son iguales siempre daría 2 intentos

        Leslie Paz Ore

        Leslie Paz Ore

        student•
        hace 4 años

        Muy bueno, gracias!

      Rubén Cuello

      Rubén Cuello

      student•
      hace 4 años

      Comparto mi versión:

      Captura de pantalla de 2022-03-30 11-08-45.png

      Bastante más simple en mi opinión :smile: Recuerden actualizar el valor de paragraph luego de refrescar la página en el bucle while, de lo contrario van a encontrar el typo, y refrescar nuevamente.

      Roger Christian Cansaya Olazabal

      Roger Christian Cansaya Olazabal

      student•
      hace 3 años

      Hay un error en su logica y por lo tanto en el codigo. Les comparto el codigo final, al fin pude usar el While / Else

      import unittest from selenium import webdriver class Typos(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path = r'.\chromedriver.exe') driver = self.driver driver.get('https://the-internet.herokuapp.com/') driver.maximize_window() driver.implicitly_wait(3) driver.find_element_by_link_text('Typos').click() def test_find_typo(self): driver = self.driver paragraf_to_ckeck = driver.find_element_by_css_selector('#content > div > p:nth-child(3)') text_to_check = paragraf_to_ckeck.text print(text_to_check) tries = 1 found = False correct_text = "Sometimes you'll see a typo, other times you won,t." while text_to_check != correct_text: driver.refresh() paragraf_to_ckeck = driver.find_element_by_css_selector('#content > div > p:nth-child(3)') text_to_check = paragraf_to_ckeck.text tries += 1 else: found = True self.assertEqual(found, True) print(f"It took {tries} tries to find the typo") def tearDown(self): self.driver.implicitly_wait(3) self.driver.close() if __name__ == "__main__": unittest.main(verbosity = 2)
      Jeyson David Vargas Crespo

      Jeyson David Vargas Crespo

      student•
      hace 5 años

      Hola, no me carga el video, ni siquiera me deja cambiar el servidor, me aparece una X en la pantalla y no deja hacer nada, alquien me puede ayudar???

      Muchas gracias.

      Steven Moreno

      Steven Moreno

      student•
      hace 5 años

      Adicioné, comprobando que la variable contenga texto y el mismo no se encuentre vacío

      self.assertTrue(isinstance(text_to_check, str) and text_to_check.strip())
        Juan Zenón

        Juan Zenón

        student•
        hace 5 años

        Súper de acuerdo, se me hizo muy raro cuando vi el código que el profesor escribió.

        Juan Antonio Pavon Carmona

        Juan Antonio Pavon Carmona

        student•
        hace 5 años
        self.assertTrue(text_to_check)

        De esta manera no daria el mismo resultado? text_to_check es un string al pasar el valor del text en el parráfo, y a la vez se comprueba si esta vacio o no.

      julian zoto

      julian zoto

      student•
      hace 4 años

      no reproduce el video, :(

        Pablo Antipan Quiñenao

        Pablo Antipan Quiñenao

        student•
        hace 4 años

        Hola Maria! Cuando eso ocurra, puedes probar cambiar el servidor de origen en la barra del reproductor Saludos!

        Rafael Torres Escobar

        Rafael Torres Escobar

        student•
        hace 4 años

        No se reproducen los videos a partri de "Selección de Elementos"

      David Fernando Peláez Muñoz

      David Fernando Peláez Muñoz

      student•
      hace 3 años

      !Que cuso tan frustrante!, ahhh

      fidel angel ochoa

      fidel angel ochoa

      student•
      hace 4 años

      CORREGI que tenia un 'while' demas, que el 'found' era inutil', que tambien sumaba intentos extra y que recargaba aun despues de encontrar la frase correcta, les comparto mi codigo:

      def test_find_typo(self): driver = self.driver paragraph_to_check = driver.find_element_by_xpath('//*[@id="content"]/div/p[2]') text_to_check = paragraph_to_check.text print(text_to_check) tries = 1 correct_text = "Sometimes you'll see a typo, other times you won't." while text_to_check != correct_text: text_to_check = driver.find_element_by_xpath('//*[@id="content"]/div/p[2]').text sleep(2) # segundos de pausa para poder notar las vece que se recarga la pagina y contar los intentos como comprobacion manual. if text_to_check != correct_text: # este 'if' me permite sumar solo en caso de que no exista coincidencia y solo entonces recarga. driver.refresh() tries += 1 print(f"It took {tries} tries to find the typo") def tearDown(self): self.driver.implicitly_wait(3) self.driver.close() if __name__ == '__main__': unittest.main(verbosity=2)
      Ediberto Enrique Coronel Villegas

      Ediberto Enrique Coronel Villegas

      student•
      hace 4 años

      Este capitulo el video esta dañado, no logro verlo

      Israel Yance

      Israel Yance

      student•
      hace 5 años

      Me salió un bucle infinito solo porque al correct_text no le había puesto punto al final.

      Israel Yance

      Israel Yance

      student•
      hace 5 años

      Solo unas observaciones. El tries += 1 debe ser dentro del primer while, sino siempre va a salir como resultado: dos. Además el driver.refresh() debería ser antes de la asignación del text_to_check para que vuelva a asignar el valor cuando va al siguiente while.

      Dejo mi código de la función

      def test_find_typo(self): driver = self.driver paragraph_to_check = driver.find_element_by_css_selector("#content > div > p:nth-child(3)") text_to_check = paragraph_to_check.text print(text_to_check) tries = 1 found = False correct_text = "Sometimes you'll see a typo, other times you won't." while text_to_check != correct_text: driver.refresh() paragraph_to_check = driver.find_element_by_css_selector("#content > div > p:nth-child(3)") text_to_check = paragraph_to_check.text tries += 1 while not found: if text_to_check == correct_text: driver.refresh() found = True self.assertEqual(found, True) print(f'It took {tries} tries to find the typo')
      Bruno Guillaume Hernández Villamil

      Bruno Guillaume Hernández Villamil

      student•
      hace 4 años

      No me quedó claro la parte donde pone los while, no entiendo como funciona esa parte, ¿Alguien podría explicarme?

      Gracias.

      Arian Racca

      Arian Racca

      student•
      hace 3 años

      Hola, no se si solo me pasa a mi pero me aparece un mensaje que dice "The media could not be loaded, either because the server or network failed or because the format is not supported." Solo con este video.

      Jeferson Andrés Cruz Herrera

      Jeferson Andrés Cruz Herrera

      student•
      hace 4 años

      Hola a tod@s tengo una consulta:

      ¿Cómo se podría validar que en efecto, al hacer clic sobre el botón "Enable" si se habilite el text box?

      Muchas gracias!!!

        Héctor Daniel Vega Quiñones

        Héctor Daniel Vega Quiñones

        teacher•
        hace 4 años

        Una forma es utilizar una demora explícita para esperar que aparezca el elemento y luego hacer un assertion.

      Mario Alexander Vargas Celis

      Mario Alexander Vargas Celis

      student•
      hace 2 años

      mi codigo:

      import unittest from selenium import webdriver from pyunitreport import HTMLTestRunner from selenium.webdriver.common.by import By #from time import sleep from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class Typos(unittest.TestCase): def setUp(self): chrome_driver_path = r"/chromedriver.exe" self.driver = webdriver.Chrome() driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get("https://the-internet.herokuapp.com/") driver.find_element(By.LINK_TEXT, "Typos").click() def test_find_typos(self): driver = self.driver paragraph_to_check = driver.find_element(By.CSS_SELECTOR, '#content > div > p:nth-child(3)') text_to_check = paragraph_to_check.text print(text_to_check) tries = 1 found = False correct_text = "Sometimes you'll see a typo, other times you won't." while text_to_check != correct_text: paragraph_to_check = driver.find_element(By.CSS_SELECTOR, '#content > div > p:nth-child(3)') text_to_check = paragraph_to_check.text driver.refresh() while not found: if text_to_check == correct_text: tries += 1 driver.refresh() found = True self.assertEqual(found, True) print(f"It took {tries} tries to find type") def tearDown(self) -> None: self.driver.close() if __name__ == "__main__": unittest.main(verbosity = 2, testRunner = HTMLTestRunner(output = "reportes", report_name = "typos_test_report")) ```import unittestfrom selenium import webdriverfrom pyunitreport import HTMLTestRunnerfrom selenium.webdriver.common.by import By#from time import sleepfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected\_conditions as EC class Typos(unittest.TestCase):   def setUp(self): chrome\_driver\_path = r"/chromedriver.exe" self.driver = webdriver.Chrome() driver = self.driver driver.implicitly\_wait(30) driver.maximize\_window() driver.get("https://the-internet.herokuapp.com/") driver.find\_element(By.LINK\_TEXT, "Typos").click()   def test\_find\_typos(self): driver = self.driver   paragraph\_to\_check = driver.find\_element(By.CSS\_SELECTOR, '#content > div > p:nth-child(3)') text\_to\_check = paragraph\_to\_check.text print(text\_to\_check)   tries = 1 found = False correct\_text = "Sometimes you'll see a typo, other times you won't."   while text\_to\_check != correct\_text: paragraph\_to\_check = driver.find\_element(By.CSS\_SELECTOR, '#content > div > p:nth-child(3)') text\_to\_check = paragraph\_to\_check.text driver.refresh()   while not found: if text\_to\_check == correct\_text: tries += 1 driver.refresh() found = True   self.assertEqual(found, True)   print(f"It took {tries} tries to find type")   def tearDown(self) -> None: self.driver.close() if \_\_name\_\_ == "\_\_main\_\_": unittest.main(verbosity = 2, testRunner = HTMLTestRunner(output = "reportes", report\_name = "typos\_test\_report"))
      Fabian Caballero

      Fabian Caballero

      student•
      hace 3 años

      Les comparto mi código

      import unittest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service class Typos(unittest.TestCase): def setUp(self): s = Service('./chromedriver') self.driver = webdriver.Chrome(service=s) driver = self.driver driver.get("PAGINA WEB") excercise = driver.find_element(By.LINK_TEXT, "Typos") excercise.click() def test_find_typos(self): driver = self.driver correct_text = "Sometimes you'll see a typo, other times you won't." pharagraph_to_check = driver.find_element(By.CSS_SELECTOR, "#content > div > p:nth-child(3)") text_to_check = pharagraph_to_check.text tries = 1 while text_to_check != correct_text: driver.refresh() tries += 1 pharagraph_to_check = driver.find_element(By.CSS_SELECTOR, "#content > div > p:nth-child(3)") text_to_check = pharagraph_to_check.text print(f"It took {tries} tries to find the typo") def tearDown(self): self.driver.close() self.driver.quit() if __name__ == "__main__": unittest.main()
      David Higuera

      David Higuera

      student•
      hace 4 años

      Opté por esta solución:

      def test_typos(self): driver = self.driver correct_text = "Sometimes you'll see a typo, other times you won't." text_to_check = driver.find_element_by_css_selector("#content > div > p:nth-child(3)").text tries = 1 while text_to_check != correct_text: tries += 1 driver.refresh() text_to_check = driver.find_element_by_css_selector("#content > div > p:nth-child(3)").text print(f"It tooks {tries} tries to find the typo")

    Escuelas

    • Desarrollo Web
      • Fundamentos del Desarrollo Web Profesional
      • Diseño y Desarrollo Frontend
      • Desarrollo Frontend con JavaScript
      • Desarrollo Frontend con Vue.js
      • Desarrollo Frontend con Angular
      • Desarrollo Frontend con React.js
      • Desarrollo Backend con Node.js
      • Desarrollo Backend con Python
      • Desarrollo Backend con Java
      • Desarrollo Backend con PHP
      • Desarrollo Backend con Ruby
      • Bases de Datos para Web
      • Seguridad Web & API
      • Testing Automatizado y QA para Web
      • Arquitecturas Web Modernas y Escalabilidad
      • DevOps y Cloud para Desarrolladores Web
    • English Academy
      • Inglés Básico A1
      • Inglés Básico A2
      • Inglés Intermedio B1
      • Inglés Intermedio Alto B2
      • Inglés Avanzado C1
      • Inglés para Propósitos Específicos
      • Inglés de Negocios
    • Marketing Digital
      • Fundamentos de Marketing Digital
      • Marketing de Contenidos y Redacción Persuasiva
      • SEO y Posicionamiento Web
      • Social Media Marketing y Community Management
      • Publicidad Digital y Paid Media
      • Analítica Digital y Optimización (CRO)
      • Estrategia de Marketing y Growth
      • Marketing de Marca y Comunicación Estratégica
      • Marketing para E-commerce
      • Marketing B2B
      • Inteligencia Artificial Aplicada al Marketing
      • Automatización del Marketing
      • Marca Personal y Marketing Freelance
      • Ventas y Experiencia del Cliente
      • Creación de Contenido para Redes Sociales
    • Inteligencia Artificial y Data Science
      • Fundamentos de Data Science y AI
      • Análisis y Visualización de Datos
      • Machine Learning y Deep Learning
      • Data Engineer
      • Inteligencia Artificial para la Productividad
      • Desarrollo de Aplicaciones con IA
      • AI Software Engineer
    • Ciberseguridad
      • Fundamentos de Ciberseguridad
      • Hacking Ético y Pentesting (Red Team)
      • Análisis de Malware e Ingeniería Forense
      • Seguridad Defensiva y Cumplimiento (Blue Team)
      • Ciberseguridad Estratégica
    • Liderazgo y Habilidades Blandas
      • Fundamentos de Habilidades Profesionales
      • Liderazgo y Gestión de Equipos
      • Comunicación Avanzada y Oratoria
      • Negociación y Resolución de Conflictos
      • Inteligencia Emocional y Autogestión
      • Productividad y Herramientas Digitales
      • Gestión de Proyectos y Metodologías Ágiles
      • Desarrollo de Carrera y Marca Personal
      • Diversidad, Inclusión y Entorno Laboral Saludable
      • Filosofía y Estrategia para Líderes
    • Diseño de Producto y UX
      • Fundamentos de Diseño UX/UI
      • Investigación de Usuarios (UX Research)
      • Arquitectura de Información y Usabilidad
      • Diseño de Interfaces y Prototipado (UI Design)
      • Sistemas de Diseño y DesignOps
      • Redacción UX (UX Writing)
      • Creatividad e Innovación en Diseño
      • Diseño Accesible e Inclusivo
      • Diseño Asistido por Inteligencia Artificial
      • Gestión de Producto y Liderazgo en Diseño
      • Diseño de Interacciones Emergentes (VUI/VR)
      • Desarrollo Web para Diseñadores
      • Diseño y Prototipado No-Code
    • Contenido Audiovisual
      • Fundamentos de Producción Audiovisual
      • Producción de Video para Plataformas Digitales
      • Producción de Audio y Podcast
      • Fotografía y Diseño Gráfico para Contenido Digital
      • Motion Graphics y Animación
      • Contenido Interactivo y Realidad Aumentada
      • Estrategia, Marketing y Monetización de Contenidos
    • Desarrollo Móvil
      • Fundamentos de Desarrollo Móvil
      • Desarrollo Nativo Android con Kotlin
      • Desarrollo Nativo iOS con Swift
      • Desarrollo Multiplataforma con React Native
      • Desarrollo Multiplataforma con Flutter
      • Arquitectura y Patrones de Diseño Móvil
      • Integración de APIs y Persistencia Móvil
      • Testing y Despliegue en Móvil
      • Diseño UX/UI para Móviles
    • Diseño Gráfico y Arte Digital
      • Fundamentos del Diseño Gráfico y Digital
      • Diseño de Identidad Visual y Branding
      • Ilustración Digital y Arte Conceptual
      • Diseño Editorial y de Empaques
      • Motion Graphics y Animación 3D
      • Diseño Gráfico Asistido por Inteligencia Artificial
      • Creatividad e Innovación en Diseño
    • Programación
      • Fundamentos de Programación e Ingeniería de Software
      • Herramientas de IA para el trabajo
      • Matemáticas para Programación
      • Programación con Python
      • Programación con JavaScript
      • Programación con TypeScript
      • Programación Orientada a Objetos con Java
      • Desarrollo con C# y .NET
      • Programación con PHP
      • Programación con Go y Rust
      • Programación Móvil con Swift y Kotlin
      • Programación con C y C++
      • Administración Básica de Servidores Linux
    • Negocios
      • Fundamentos de Negocios y Emprendimiento
      • Estrategia y Crecimiento Empresarial
      • Finanzas Personales y Corporativas
      • Inversión en Mercados Financieros
      • Ventas, CRM y Experiencia del Cliente
      • Operaciones, Logística y E-commerce
      • Gestión de Proyectos y Metodologías Ágiles
      • Aspectos Legales y Cumplimiento
      • Habilidades Directivas y Crecimiento Profesional
      • Diversidad e Inclusión en el Entorno Laboral
      • Herramientas Digitales y Automatización para Negocios
    • Blockchain y Web3
      • Fundamentos de Blockchain y Web3
      • Desarrollo de Smart Contracts y dApps
      • Finanzas Descentralizadas (DeFi)
      • NFTs y Economía de Creadores
      • Seguridad Blockchain
      • Ecosistemas Blockchain Alternativos (No-EVM)
      • Producto, Marketing y Legal en Web3
    • Recursos Humanos
      • Fundamentos y Cultura Organizacional en RRHH
      • Atracción y Selección de Talento
      • Cultura y Employee Experience
      • Gestión y Desarrollo de Talento
      • Desarrollo y Evaluación de Liderazgo
      • Diversidad, Equidad e Inclusión
      • AI y Automatización en Recursos Humanos
      • Tecnología y Automatización en RRHH
    • Finanzas e Inversiones
      • Fundamentos de Finanzas Personales y Corporativas
      • Análisis y Valoración Financiera
      • Inversión y Mercados de Capitales
      • Finanzas Descentralizadas (DeFi) y Criptoactivos
      • Finanzas y Estrategia para Startups
      • Inteligencia Artificial Aplicada a Finanzas
      • Domina Excel
      • Financial Analyst
      • Conseguir trabajo en Finanzas e Inversiones
    • Startups
      • Fundamentos y Validación de Ideas
      • Estrategia de Negocio y Product-Market Fit
      • Desarrollo de Producto y Operaciones Lean
      • Finanzas, Legal y Fundraising
      • Marketing, Ventas y Growth para Startups
      • Cultura, Talento y Liderazgo
      • Finanzas y Operaciones en Ecommerce
      • Startups Web3 y Blockchain
      • Startups con Impacto Social
      • Expansión y Ecosistema Startup
    • Cloud Computing y DevOps
      • Fundamentos de Cloud y DevOps
      • Administración de Servidores Linux
      • Contenerización y Orquestación
      • Infraestructura como Código (IaC) y CI/CD
      • Amazon Web Services
      • Microsoft Azure
      • Serverless y Observabilidad
      • Certificaciones Cloud (Preparación)
      • Plataforma Cloud GCP

    Platzi y comunidad

    • Platzi Business
    • Live Classes
    • Lanzamientos
    • Executive Program
    • Trabaja con nosotros
    • Podcast

    Recursos

    • Manual de Marca

    Soporte

    • Preguntas Frecuentes
    • Contáctanos

    Legal

    • Términos y Condiciones
    • Privacidad
    • Tyc promociones
    Reconocimientos
    Reconocimientos
    Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
    Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
    Logo reconocimientoPrimera Startup EdTech · 2018
    Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
    Logo reconocimientoCEO Mejor Emprendedor del año · 2024
    De LATAM conpara el mundo
    YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads