Files
navegator/dev/issues/011-downloads-handling.md
T
Developer c165f2f788 docs: issues técnicas para nuevas funcionalidades
Agrega 19 issues técnicas documentando funcionalidades implementadas y pendientes.

Issues completadas (movidas a dev/issues/completed/):
- 001-conversor-web-markdown.md
- 002-accessibility-tree.md
- 003-gestion-cookies-perfil.md
- 004-gestion-extensiones-chrome.md
- 005-eliminar-timeouts-innecesarios.md

Issues implementadas:
- 006-manejo-tabs-ventanas.md
- 016-manejo-iframes.md
- 017-actions-api.md
- 018-file-uploads.md
- 019-expected-conditions-mejoradas.md

Issues pendientes (media prioridad):
- 007-alert-prompt-confirm-handling.md
- 008-screenshot-elementos-especificos.md
- 009-pdf-generation.md
- 010-device-emulation-completo.md
- 011-downloads-handling.md

Issues pendientes (baja prioridad / avanzado):
- 012-browser-contexts-multi-sesion.md
- 013-video-recording.md
- 014-network-mocking-avanzado.md
- 015-geolocation-permissions.md

Incluye también dev/NUEVAS_FUNCIONALIDADES.md con resumen completo.

Directorio: dev/
2026-03-25 00:49:06 +01:00

2.2 KiB

Issue #011: Downloads Handling

Tipo: Enhancement Prioridad: Media Estado: Pendiente

Descripción

Implementar sistema para detectar, gestionar y esperar downloads de archivos.

Funcionalidad deseada

  • Detectar cuando inicia un download
  • Esperar a que download complete
  • Obtener path del archivo descargado
  • Configurar directorio de descargas
  • Cancelar downloads en progreso
  • Obtener progreso de download
  • Manejar múltiples downloads simultáneos

API propuesta

type Download struct {
    ID       string
    URL      string
    Filename string
    Path     string
    MimeType string
    Size     int64
    State    DownloadState // "inProgress" | "completed" | "cancelled"
}

type DownloadState string
const (
    DownloadStateInProgress DownloadState = "inProgress"
    DownloadStateCompleted  DownloadState = "completed"
    DownloadStateCancelled  DownloadState = "cancelled"
)

type DownloadOptions struct {
    DownloadPath string // Directorio donde guardar
    Behavior     string // "allow" | "deny" | "allowAndName"
}

func (b *Browser) SetDownloadBehavior(ctx context.Context, opts *DownloadOptions) error
func (b *Browser) WaitForDownload(ctx context.Context, action func()) (*Download, error)
func (b *Browser) OnDownload(handler func(*Download)) error
func (b *Browser) GetDownloads(ctx context.Context) ([]*Download, error)
func (b *Browser) CancelDownload(ctx context.Context, downloadID string) error

Uso

// Configurar directorio de descargas
b.SetDownloadBehavior(ctx, &browser.DownloadOptions{
    DownloadPath: "/tmp/downloads",
    Behavior: "allow",
})

// Esperar download
download, _ := b.WaitForDownload(ctx, func() {
    b.Click(ctx, "#download-button")
})

log.Printf("Downloaded: %s to %s", download.Filename, download.Path)

// Handler de downloads
b.OnDownload(func(d *browser.Download) {
    log.Printf("Download started: %s", d.Filename)
})

CDP Methods

  • Browser.setDownloadBehavior
  • Page.downloadWillBegin (evento)
  • Page.downloadProgress (evento)

Referencias