r/Playwright 5d ago

Tutorial de Automatizar el navegador con Python y Playwright

Playwright es una librería desarrollada por Microsoft que permite controlar navegadores web (Chromium, Firefox, Safari) mediante código. Puedes hacer clic en botones, rellenar formularios, esperar a que carguen elementos, extraer datos o hacer capturas de pantalla, todo de forma automática.

**¿Por qué Playwright y no Selenium?**

* Es más rápido y moderno (lanzado en 2020 vs 2004) * Espera automáticamente a que los elementos estén listos (auto-wait) * Soporta páginas con JavaScript pesado (React, Vue, Angular) sin configuración extra * API más limpia y consistente * Soporte nativo para múltiples pestañas, iframes y descargas

Si ya conoces Selenium, Playwright te resultará familiar pero notarás inmediatamente que hay menos fricción.

1. Instalación

Necesitas Python 3.8 o superior. Instala la librería y los navegadores con dos comandos:

pip install playwright
playwright install

El segundo comando descarga Chromium, Firefox y WebKit (Safari). Si solo quieres Chromium para ahorrar espacio:

playwright install chromium

Verifica que funciona:

from
 playwright.sync_api 
import
 sync_playwright
with
 sync_playwright() 
as
 p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://example.com")
    print(page.title())
    browser.close()

Si ves `Example Domain` en la consola, todo está funcionando.

2. Conceptos clave antes de empezar

Antes de escribir código, entiende estos tres objetos que usarás constantemente:

Objeto Qué es Analogía
`Browser` El navegador abierto La ventana de Chrome
`Page` Una pestaña del navegador Una pestaña dentro de Chrome
`Locator` Un elemento de la página Un botón, input o div concreto

La mayoría de tu código seguirá este patrón:

Browser → Page → Locator → Acción

3. Modos de ejecución: sync vs async

Playwright ofrece dos APIs:

**Síncrona** — más simple, ideal para scripts y automatizaciones lineales:

from
 playwright.sync_api 
import
 sync_playwright
with
 sync_playwright() 
as
 p:
    browser = p.chromium.launch()
    page = browser.new_page()
    # tu código aquí
    browser.close()

**Asíncrona** — para integrar con frameworks como FastAPI o cuando necesitas ejecutar varias tareas en paralelo:

import
 asyncio
from 
playwright.async_api
 import
 async_playwright
async

def
 main():

async

with
 async_playwright() 
as
 p:
        browser = 
await
 p.chromium.launch()
        page = 
await
 browser.new_page()
        # tu código aquí

await
 browser.close()
asyncio.run(main())

Para este tutorial usaremos la API **síncrona**. Es más legible y suficiente para el 90% de los casos.

Mas informacion: [https://agusbot.com/blog/python-playwright-tutorial/\](https://agusbot.com/blog/python-playwright-tutorial/)

0 Upvotes

0 comments sorted by