Files
fn_registry/functions/browser/cdp_screenshot.md
T
egutierrez 8742cb25be feat(browser): auto-commit con 60 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-07 11:42:31 +02:00

3.3 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
cdp_screenshot function go browser 1.2.0 impure func CdpScreenshot(c *CDPConn, outputPath string, opts CdpScreenshotOpts) error Captura un screenshot de la pagina actual via Page.captureScreenshot y lo guarda en el archivo indicado. Soporta PNG y JPEG, viewport o pagina completa. En modo FullPage usa Page.getLayoutMetrics (cssContentSize) para construir un clip que cubre la altura real del documento. Crea el directorio destino si no existe. Compone sobre CdpScreenshotBytes para la captura a memoria.
chrome
cdp
browser
automation
screenshot
devtools
png
navegator
cdp_screenshot_bytes_go_browser
false error_go_core
encoding/base64
fmt
os
path/filepath
name desc
c conexión CDP activa
name desc
outputPath ruta del archivo PNG/JPEG de salida
name desc
opts opciones de captura (FullPage, Quality, Format)
error si falla la captura o la escritura del archivo true
TestBuildFullPageClip
TestCdpScreenshot
functions/browser/cdp_screenshot_test.go functions/browser/cdp_screenshot.go

Ejemplo

conn, _ := CdpConnect(9222)
CdpNavigate(conn, "https://example.com")

err := CdpScreenshot(conn, "/tmp/page.png", CdpScreenshotOpts{
    FullPage: true,
    Format:   "png",
})

Cuando usarla

Para guardar evidencia visual de una página tras navegar o ejecutar acciones. Usa FullPage: true cuando necesites toda la altura del documento (capturas de auditoría, scraping visual de páginas largas); false (default) para capturar solo el viewport visible, más rápido.

Gotchas

  • FullPage usa el tamaño real del documento: consulta Page.getLayoutMetrics y construye el clip desde cssContentSize (CSS pixels). Si Chrome no devuelve dimensiones válidas, cae a captura normal con captureBeyondViewport=true en vez de fallar.
  • Páginas con lazy-loading: el cssContentSize refleja el DOM en el instante de la captura. Si la página carga contenido al hacer scroll, haz scroll + CdpWaitIdle antes para que la altura sea la final.
  • Formato según extensión: la función no infiere el formato de la extensión del outputPath; pásalo explícito en opts.Format ("png" o "jpeg"). El default es "png".
  • JPEG quality: solo aplica si Format == "jpeg"; el default es 80.

Notas

El struct CdpScreenshotOpts tiene campos: FullPage bool, Quality int (JPEG), Format string ("png" o "jpeg"). Chrome retorna la imagen como base64 que se decodifica y escribe al disco.

Capability growth log

  • v1.2.0 (2026-06-06) — refactor a composición: toda la lógica de captura (enable/clip FullPage/captureScreenshot/decode base64) se extrae a CdpScreenshotBytes (cdp_screenshot_bytes_go_browser), que devuelve bytes + mimeType en memoria. CdpScreenshot ahora compone sobre ella + crea el directorio + escribe el archivo. Firma pública y comportamiento observable intactos.
  • v1.1.0 (2026-06-06) — FullPage implementado de verdad: clip desde Page.getLayoutMetrics (cssContentSize) vía función pura buildFullPageClip, en vez del código muerto que calculaba scrollHeight y lo descartaba.