CursosEmpresasBlogLiveConfPrecios

Manejar alert y pop-up

Clase 12 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
    Enrique Uzcategui

    Enrique Uzcategui

    student•
    hace 4 años

    Si a alguno le sale este error "AttributeError: 'WebDriver' object has no attribute 'switch_to_alert" como a mí, la solución es esta:

    #Reemplazar esto alert = driver.switch_to_alert() #Por esto alert = driver.switch_to.alert
      Ismael Danilo Herrera Sánchez

      Ismael Danilo Herrera Sánchez

      student•
      hace 4 años

      Gracias bro

      estefany Liza

      estefany Liza

      student•
      hace 4 años

      Gracias Enrique me funciono tu solución! Gran dato

    Korpi delfin

    Korpi delfin

    student•
    hace 5 años
    import unittest from selenium import webdriver class CompareProducts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path = r'.\chromedriver.exe') driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get("http://demo-store.seleniumacademy.com/") def test_compare_products_removal_alert(self): driver = self.driver search_field = driver.find_element_by_name('q') #como buena práctica se recomienda limpiar los campos search_field.clear() search_field.send_keys('tee') search_field.submit() driver.find_element_by_class_name('link-compare').click() driver.find_element_by_link_text('Clear All').click() #creamos una variable para interactuar con el pop-up alert = driver.switch_to_alert() #vamos a extraer el texto que muestra alert_text = alert.text #vamos a verificar el texto de la alerta self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) alert.accept() def tearDown(self): self.driver.implicitly_wait(3) self.driver.close() if __name__ == "__main__": unittest.main(verbosity = 2)
      Fredy Mendoza Vargas

      Fredy Mendoza Vargas

      student•
      hace 5 años

      Muchas gracias!

      Cristian David Restrepo Marin

      Cristian David Restrepo Marin

      student•
      hace 5 años

      gracias por el aporte

    Steven Moreno

    Steven Moreno

    student•
    hace 5 años

    Hola mi IDE (PyCharm) Me muestra que la función 'switch_to_alert()' está deprecada. Como alternativa, me dice que use 'switch_to.alert'. Es una advertencia funciona aún de las dos formas.

    Adicionalmente, estoy usando el driver para firefox y me salía un error en la línea 21. 'could not be scrolled into view'. Busqué en stackoverflow y tuve que hacer un cambio, agregando librerías adicionales para hacer funcionar dicha línea. Línea 21:

    WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CLASS_NAME, "link-compare"))).click()

    Librerias:

    from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By
      Victor Luis Landaeta Jimenez

      Victor Luis Landaeta Jimenez

      student•
      hace 5 años

      Hola, a mi también me apareció el mismo warning. Pero cambie a driver.switch_to.alert tal como indica y todo me funcionó perfectamente, sin necesidad de importar más librerias.

      Saludos!!

      Junior Erny Aguayo Cuadros

      Junior Erny Aguayo Cuadros

      student•
      hace 5 años

      Hola que raro, a mi me salió el mismo error en el pycharm pero solo cambie la función a switch_to.alert y trabajo sin problemas

    Alan German Gutiérrez

    Alan German Gutiérrez

    student•
    hace 4 años

    Al ejecutar el código del ejemplo me arrojaba el error:

    AttributeError: 'WebDriver' object has no attribute 'switch_to_alert'

    Lo solucioné reemplazando

    alert = driver.switch_to_alert() por alert = driver.switch_to.alert

    Saludos.

      Daniel Ignacio González Cañete

      Daniel Ignacio González Cañete

      student•
      hace 4 años

      gracias, tuve el mismo error!

    estefany Liza

    estefany Liza

    student•
    hace 4 años

    Codigo fuenre

    Cambie este codigo #alert = driver.switch_to_alert() Por alert = driver.switch_to.alert
    import unittest from pyunitreport import HTMLTestRunner from selenium import webdriver from selenium.webdriver.support import select from selenium.webdriver.support.ui import Select class Alerts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome("D:\webdriver-chrome/chromedriver.exe") driver = self.driver driver.implicitly_wait(50) driver.maximize_window() driver.get('http://demo-store.seleniumacademy.com/') def test_compare_products_removal_alert(self): driver = self.driver search_field = driver.find_element_by_name('q') search_field.clear() search_field.send_keys('tee') search_field.submit() driver.find_element_by_class_name('link-compare').click() driver.find_element_by_link_text('Clear All').click() #alert = driver.switch_to_alert() alert = driver.switch_to.alert alert_text = alert.text self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) alert.accept def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main(verbosity=2,testRunner=HTMLTestRunner(output="reportes", report_name="prueba_asssert"))
      Jesús Enrique Morocoima Marcano

      Jesús Enrique Morocoima Marcano

      student•
      hace 4 años

      Super Me Sirvio Mucho... Gracias

      Jesús Enrique Morocoima Marcano

      Jesús Enrique Morocoima Marcano

      student•
      hace 4 años

      Super.. Gracias Por este nuevo aporte

    David Diaz

    David Diaz

    student•
    hace 3 años

    Las cosas han cambiado un poquito para el día de hoy 8 de Agosto, 2022. Así que les comparto mi código por si les sirve de guía:

    import unittest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager class CompareProducts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get("NoAceptaElWebsite") def test_compare_products_removal_alert(self): driver = self.driver search_field = driver.find_element(By.NAME, 'q') search_field.clear() search_field.send_keys('tee') search_field.submit() driver.find_element(By.CLASS_NAME, 'link-compare').click() driver.find_element(By.LINK_TEXT, 'Clear All').click() alert = driver.switch_to.alert alert_text = alert.text self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) alert.accept() def tearDown(self): self.driver.implicitly_wait(3) self.driver.close() if __name__ == "__main__": unittest.main(verbosity = 2)

    #HappyCoding

      Humberto Adrián Hernández Maldonado

      Humberto Adrián Hernández Maldonado

      student•
      hace 3 años

      Hola David, esta incorrecto tu script, debes respetar la estructura del nombre de las variables (mayúsculas y minúsculas) para que no te mande errores Te comparto tu ejercicio corregido.

      import unittest import time from selenium import webdriver class CompareProducts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path = r'C:/Users/Humberto Hernandez M/Dropbox/A Mi carpeta HH/2 Desarrollos Cursos/29 Selenium/chromedriver.exe') driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get("demo-store.seleniumacademy.com/") def test_compare_products_removal_alert(self): driver = self.driver search_field = driver.find_element_by_name('q') search_field.clear() search_field.send_keys('tee') search_field.submit() driver.find_element_by_class_name('link-compare').click() driver.find_element_by_link_text('Clear All').click() # Cambio de focus al alert alert = driver.switch_to.alert #extraer el texto del alert alert_text = alert.text #verificar si el texto del alert es el que esperamos time.sleep(15) self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) # dar clic e el noton aceptar alert.accept() time.sleep(15) def tearDown(self): self.driver.implicitly_wait(3) self.driver.close() if __name__ == "__main__": unittest.main(verbosity = 2)
      David Diaz

      David Diaz

      student•
      hace 3 años

      no está mal, amigo o.o pero si te funciona tu método, bienvenido sea 😅

    Royer Guerrero Pinilla

    Royer Guerrero Pinilla

    student•
    hace 5 años

    No conocía la funcionalidad de swich_to_alert en fin selemiun tiene infinidad de cosas super útiles, un buen debug para ver que es lo que hace o en donde falla es import pdb; pdb.set_trace(), ¿se puede hacer swich al sistema de ficheros para seccionar un archivo?

      Héctor Daniel Vega Quiñones

      Héctor Daniel Vega Quiñones

      teacher•
      hace 5 años

      Sí, es posible hacer referencia a archivos para guardarlos o directorios para descargas. Estas ya son funcionalidades avanzadas de Selenium y merecen la pena otro curso ;)

    Matias Gabriel Pierri

    Matias Gabriel Pierri

    student•
    hace 5 años

    Estoy teniendo un problema y no termino de entender el error que me da

    def test_compare_products_removal_alert(self): driver = self.driver search_field = driver.find_element_by_name('q') search_field.clear() search_field.send_keys('tee') search_field.submit() driver.find_elements_by_class_name('link-compare').click() driver.find_elements_by_link_text('Clear All').click() alert = driver.switch_to_alert() alert_text = alert.text self.assertEqual('Are you sure you would like to remove all products from your comparison?',alert_text) alert.accept()

    Traceback (most recent call last): File "alerts.py", line 21, in test_compare_products_removal_alert driver.find_elements_by_class_name("link-compare").click() AttributeError: 'list' object has no attribute 'click'

    Me asegure de copiar exactamente igual la linea de driver.find_elements_by_class_name('link-compare').click() pero sigue dandome ese error. Que significa ¿AttributeError: 'list' object has no attribute 'click'?

      Alberto Coronado

      Alberto Coronado

      student•
      hace 4 años

      me paso casi el mismo error, fue por typo

    Randhal Smith Ramirez Orozco

    Randhal Smith Ramirez Orozco

    student•
    hace 3 años

    Para los que quieran elaborar reportes en Python 3.9.13 con Selenium 4.4.3 aqui el codigo.

    import unittest from selenium import webdriver from pyunitreport import HTMLTestRunner from selenium.webdriver.common.by import By class Popups(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome(executable_path = 'chromedriver.exe') cls.driver.get('http://demo-store.seleniumacademy.com/') cls.driver.maximize_window() cls.driver.implicitly_wait(15) def test_compare_products_removal_alert(self): search_field = self.driver.find_element(By.NAME, 'q') search_field.clear() search_field.send_keys('tee') search_field.submit() self.driver.find_element(By.CLASS_NAME, 'link-compare').click() self.driver.find_element(By.LINK_TEXT, 'Clear All').click() alert = self.driver.switch_to.alert alert_text = alert.text self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) alert.accept() @classmethod def tearDownClass(cls): cls.driver.quit() if __name__ == "__main__": unittest.main(verbosity = 2, testRunner = HTMLTestRunner(output = 'reportes', report_name = 'popup-report'))
    Jesús Velázquez Jiménez

    Jesús Velázquez Jiménez

    student•
    hace 4 años

    Son muy interesantes estas funcionalidades

    import unittest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service class CompareProducts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(service=Service('./chromedriver')) driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get('http://demo-store.seleniumacademy.com/') def test_compare(self): driver = self.driver search_field = driver.find_element(By.NAME, 'q') search_field.clear() search_field.send_keys('tee') search_field.submit() driver.find_element(By.CLASS_NAME, 'link-compare').click() driver.find_element(By.LINK_TEXT, 'Clear All').click() # Change Focus of browser to alert alert = driver.switch_to.alert alert_text = alert.text self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) alert.accept() def tearDown(self): self.driver.implicitly_wait(3) self.driver.close() if __name__ == '__main__': unittest.main(verbosity = 2)
    Flavio Abat Carrola Reta

    Flavio Abat Carrola Reta

    student•
    hace 3 años

    Un saludo a todos comparto como solucione el error de; alert = driver.switch_to_alert() alert_text = alert.text()

    < # ALERTA # Para interactuar con el alert, haremos un cambio asignado dentro de una variable # con lo cual el cursor dentro del navegador se centrará en el 'alert' : alert = driver.switch_to.alert # Extraeremos el texto de la alerta y lo almacenaremos dentro de un variable: alert_text = alert.text print('ALERTA !!!:', '/n', alert_text)>
    Jose Antonio Rojas Ollarves

    Jose Antonio Rojas Ollarves

    student•
    hace 5 años

    Amigos les dejo el codigo, de la clase estoy utilizando "FireFox" por que en Google chrome aveces me bloquea el acceso la pagina, aqui esta el codigo de la clase con comentarios explicados.

    import unittest from selenium import webdriver class CompareProducts(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox(executable_path= r'./geckodriver.exe') driver = self.driver driver.implicitly_wait(3) driver.maximize_window() driver.get('https://demo-store.seleniumacademy.com/') def test_compare_products_with_alert(self): driver = self.driver search_field = driver.find_element_by_name('q') #Buscar cuadro de busqueda search_field.clear() #Limpiar texto #Ingresar la busqueda search_field.send_keys('tee') #search_field = driver.find_elements_by_class_name('button').click() search_field = driver.find_element_by_xpath('/html/body/div/div[2]/header/div/div[4]/form/div[1]/button').click() #search_field.submit()#Enviar #Buscar elemento agregar a lista de comparacion driver.find_element_by_class_name('link-compare').click() #Buscar elemento para eliminar el enlace de la lista driver.find_element_by_link_text('Clear All').click() #Interaccion con elemento alert alert = driver.switch_to_alert() #Cambiar el foco o el cursor al elemento alert alert_text = alert.text#Extraer el texto, para compararlo #assert de comparacion del texto para decidir la accion self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) #Comparacion #Click en el boton aceptar alert.accept() def tearDown(self): driver = self.driver driver.close() if __name__ == "__main__": unittest.main(verbosity= 2)
    Edward Chapula Alcaraz

    Edward Chapula Alcaraz

    student•
    hace 4 años

    Hay un problema al usar el alert asi:

    alert = driver.switch_to_alert()

    solo hay que cambiarlo por

    alert = driver.switch_to.alert
      Jorge Salinas

      Jorge Salinas

      student•
      hace 4 años

      Gracias crack. Llevaba rato pesando que pasaba con esa parte.

    David Andrés Valero Vanegas

    David Andrés Valero Vanegas

    student•
    hace 5 años

    A mi me funcionó sin los paréntesis del alert():

    def test_compare_products_removal_alert(self): driver = self.driver search_field = driver.find_element_by_name('q') search_field.clear() search_field.send_keys('tee') search_field.submit() driver.find_element_by_class_name('link-compare').click() driver.find_element_by_link_text('Clear All').click() alerta = driver.switch_to.alert alert_text = alerta.text self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) alerta.accept() time.sleep(5) def tearDown(self): self.driver.quit()
      Jose Antonio Rojas Ollarves

      Jose Antonio Rojas Ollarves

      student•
      hace 5 años

      te hace falta el entry point para poder correr la prueba

      Jose Gabriel Zaragoza

      Jose Gabriel Zaragoza

      student•
      hace 4 años

      Me sucedión lo mismo, a mi me salìa ´Alert´ object is not callable, le quité los paréntesis y funcionó perfecto :)

    Carlos Andres Ocampo Pabon

    Carlos Andres Ocampo Pabon

    student•
    hace 5 años

    Ya que la clase 'link-compare' se repite en todos los items resultados de 'tee', ¿cómo hace Selenium para reconocer que queríamos seleccionar el primero? o al usar la función 'find_element_by_class_name()' siempre se trae el primer elemento que se encuentre en el HTML y tenga este nombre de clase?

      Julio César Zaravia Paredes

      Julio César Zaravia Paredes

      student•
      hace 5 años

      ¡Hola!

      Efectivamente, el método find_element_by_class_name trae el primer elemento cuya clase coincida con la cadena de texto que has ingresado.

      Puedes revisar la lógica de estos métodos en la documentación.

      ¡Saludos!

    Jhonatan David Ibarra Lavado

    Jhonatan David Ibarra Lavado

    student•
    hace 5 años

    esto cada vez me sorprende

    Marlon Ramirez

    Marlon Ramirez

    student•
    hace 3 años

    Unos de los cambios mas importantes:

    alert = driver.switch_to_alert() #Antes alert = driver.switch_to.alert #Ahora
    Wilson Gustavo Chango Sailema

    Wilson Gustavo Chango Sailema

    student•
    hace 3 años
    import unittest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from pyunitreport import HTMLTestRunner class CompareProducts(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver = self.driver driver.implicitly_wait(30) driver.maximize_window() driver.get("Link URL") def test_compare_products_removal_alert(self): driver = self.driver search_field = driver.find_element(By.NAME, 'q') search_field.clear() search_field.send_keys('tee') search_field.submit() driver.find_element(By.CLASS_NAME, 'link-compare').click() driver.find_element(By.LINK_TEXT, 'Clear All').click() alert = driver.switch_to.alert alert_text = alert.text self.assertEqual('Are you sure you would like to remove all products from your comparison?', alert_text) alert.accept() def tearDown(self): self.driver.implicitly_wait(3) self.driver.close() if __name__ == "__main__": unittest.main(verbosity = 2, testRunner = HTMLTestRunner(output = 'reports', report_name = 'report_alerts'))
    Eduardo Jimenez

    Eduardo Jimenez

    student•
    hace 3 años

    Hola a toda la comunidad de platzi. En mi caso tuve un error muy repetido en lo que seria |

    alert = driver.switch_to_alert() #Esto me mostraba un error y decia "object is not callable"
    alert = driver.switch_to.alert #El cambio que realice

    Sin embargo la pueba se realizaba muy rapido y no supe como integrar los tiempos de espera.

    La solucion a esto ultimo fue agregar un paso extra (ejemplo ir al landing page) de esta forma me pude dar cuenta que la accion de acerptar el pop up se realizaba correctamente.

      Angel Hernandez

      Angel Hernandez

      student•
      hace 3 años

      Hola, le metodo que hay que usar es este:

      alert = driver._switch_to.alert

    Bruno Marcelo Lara Sainz

    Bruno Marcelo Lara Sainz

    student•
    hace 4 años

    los funciones que uno puede realizar con selenium y Python son sorprendentes

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