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
  • 2
    Historia de Selenium

    Historia de Selenium

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

    Otras herramientas de testing y automatización

    03:40
Preparar entorno de trabajo
  • 4
    Configurar entorno de trabajo

    Configurar entorno de trabajo

    01:43
  • 5

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

    01:44
  • 6
    ¡Hola, mundo!

    ¡Hola, mundo!

    11:51
Utilizar comandos básicos
  • 7
    Encontrar elementos con find_element

    Encontrar elementos con find_element

    15:23
  • 8
    Preparar assertions y test suites

    Preparar assertions y test suites

    13:50
  • 9

    Entender las clases WebDriver y WebElement

    01:18
Interactuar con elementos
  • 10
    Manejar form, textbox, checkbox y radio button

    Manejar form, textbox, checkbox y radio button

    13:37
  • 11
    Manejar dropdown y listas

    Manejar dropdown y listas

    07:42
  • 12
    Manejar alert y pop-up

    Manejar alert y pop-up

    06:05
  • 13
    Automatizar navegación

    Automatizar navegación

    03:54
Sincronizar pruebas
  • 14
    Demora implícita y explícita

    Demora implícita y explícita

    08:38
  • 15

    Condicionales esperadas

    00:44
Retos
  • 16
    Agregar y eliminar elementos

    Agregar y eliminar elementos

    09:16
  • 17
    Elementos dinámicos

    Elementos dinámicos

    06:46
  • 18
    Controles dinámicos

    Controles dinámicos

    08:01
  • 19
    Typos

    Typos

    05:43
  • 20
    Ordenar tablas

    Ordenar tablas

    07:12
Metodologías de Trabajo
  • 21
    Data Driven Testing (DDT)

    Data Driven Testing (DDT)

    13:35
  • 22
    Page Object Model (POM)

    Page Object Model (POM)

    10:35
Cierre del curso
  • 23
    Realizar una prueba técnica

    Realizar una prueba técnica

    11:33
  • 24
    Conclusiones

    Conclusiones

    01:43
    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 3 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