Files
navegator/dev/issues/016-manejo-iframes.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.3 KiB

Issue #016: Manejo de iFrames

Tipo: Enhancement Prioridad: Alta Estado: En progreso

Descripción

Implementar capacidad para trabajar con elementos dentro de iframes.

Funcionalidad deseada

  • Cambiar contexto a un iframe específico
  • Volver al contexto principal (main frame)
  • Listar todos los iframes de la página
  • Detectar cuando iframe carga
  • Ejecutar JavaScript dentro de iframe
  • Click/Type en elementos dentro de iframe
  • Navegación en cascada (frame -> subframe -> subsubframe)

API propuesta

// Frame representa un iframe
type Frame struct {
    ID         string
    ParentID   string
    URL        string
    Name       string
    FrameTree  []*Frame // Sub-frames
}

// SwitchToFrame cambia contexto a un iframe
func (b *Browser) SwitchToFrame(ctx context.Context, selector string) error

// SwitchToFrameByName cambia a iframe por atributo name
func (b *Browser) SwitchToFrameByName(ctx context.Context, name string) error

// SwitchToMainFrame vuelve al contexto principal
func (b *Browser) SwitchToMainFrame(ctx context.Context) error

// GetFrames obtiene todos los frames de la página
func (b *Browser) GetFrames(ctx context.Context) ([]*Frame, error)

// WaitForFrame espera a que un frame cargue
func (b *Browser) WaitForFrame(ctx context.Context, selector string) error

// EvaluateInFrame ejecuta JS en un frame específico
func (b *Browser) EvaluateInFrame(ctx context.Context, frameID string, script string) (*EvaluateResult, error)

Uso

// Cambiar a iframe
b.SwitchToFrame(ctx, "#payment-iframe")

// Interactuar dentro del iframe
b.Type(ctx, "#card-number", "1234567890123456", nil)
b.Click(ctx, "#submit-payment")

// Volver al frame principal
b.SwitchToMainFrame(ctx)

// Listar frames
frames, _ := b.GetFrames(ctx)
for _, frame := range frames {
    log.Printf("Frame: %s - %s", frame.Name, frame.URL)
}

CDP Methods

  • Page.getFrameTree - Árbol de frames
  • DOM.describeNode - Info de frame node
  • Runtime.evaluate con contextId específico

Referencias