Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Automatiza la web con Puppeteer

Automatiza la web con Puppeteer

A veces, determinados servicios no nos proveen de herramientas para automatizar procesos. Por ejemplo, acceder un sitio web a descargar un PDF y subirlo a un servidor puede ser una tarea recurrente y aburrida. Con Puppeteer puedes automatizar este tipo de tareas y convertir una serie de pasos manuales en un pequeño script en Nodejs.

Ángel M

June 11, 2019
Tweet

More Decks by Ángel M

Other Decks in Programming

Transcript

  1. @_angelmm Miembro del equipo técnico de VMware Desarrollador Full Stack.

    Me encantan los videojuegos y los vinilos! angelmm.rocks
  2. Cada 3 meses... • Acceder a los datos de la

    cuenta • Iniciar sesión en la interfaz web • Generar una contraseña aleatoria • Actualizar la contraseña • Guardar el nuevo valor x6
  3. Posibles problemas • Olvidar rotar una de las cuentas •

    Guardar una contraseña errónea • Generar una contraseña insegura • Olvidar la contraseña en un fichero •
  4. Puppeteer (Tirititero) Es una librería para Node que te permite

    controlar Chrome, Chromium o Firefox* de manera programática. Fue lanzada en 2017 por Google.
  5. Ventajas de Puppeteer • Utiliza el protocolo de DevTools •

    Instala la última versión compatible del navegador • Proporciona una API simple y común
  6. Requisitos • Entorno de Node > 7.6.0 (Recomiendo 10.16.2 LTS)

    • Conocimientos básicos de Javascript, HTML y CSS y ecosistema Node (npm)
  7. Iniciar sesión Se necesitan descargar 105 recursos ~3-4s de carga

    entre pantallas Varios iframes para mostrar las cookies
  8. Selectores IDs únicos Classes CSS únicas Atributos Contenido #user, #search

    .search-field input[name="q"] //a[contains(., 'test')]
  9. ¿Qué ocurre si hay fallos? • No funciona la web

    • La contraseña es inválida • 500 •
  10. Visibilidad con logs y capturas Escribe en un fichero de

    log TODO lo que está haciendo el proceso de automatización. Puedes almacenar capturas de pantalla si es necesario.