8742cb25be
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.3 KiB
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. |
|
|
false | error_go_core |
|
|
error si falla la captura o la escritura del archivo | true |
|
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.getLayoutMetricsy construye el clip desdecssContentSize(CSS pixels). Si Chrome no devuelve dimensiones válidas, cae a captura normal concaptureBeyondViewport=trueen vez de fallar. - Páginas con lazy-loading: el
cssContentSizerefleja el DOM en el instante de la captura. Si la página carga contenido al hacer scroll, haz scroll +CdpWaitIdleantes 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 enopts.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.CdpScreenshotahora 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.