Files
egutierrez 5b10b419a2 feat(browser): auto-commit con 44 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 12:49:54 +02:00

2.2 KiB

id, name, kind, lang, domain, purity, version, tested, description, tags, signature, uses_functions, uses_types, returns, returns_optional, error_type, imports, file_path, example, params, output
id name kind lang domain purity version tested description tags signature uses_functions uses_types returns returns_optional error_type imports file_path example params output
cdp_list_frames_go_browser cdp_list_frames function go browser impure 1.0.0 false Lista todos los frames/iframes de la pestaña activa usando Page.getFrameTree y devuelve el árbol aplanado con ID, parentID, URL y nombre de cada frame.
cdp
browser
iframe
frames
page
navegator
func CdpListFrames(c *CDPConn) ([]CdpFrame, error)
false error_go_core
functions/browser/cdp_list_frames.go conn, _ := CdpConnect("localhost", 9222, "") frames, err := CdpListFrames(conn) for _, f := range frames { fmt.Printf("frame %s parent=%s url=%s\n", f.ID, f.ParentID, f.URL) }
name desc
c Conexión CDP activa obtenida con CdpConnect; apunta a la pestaña cuyo árbol de frames se quiere inspeccionar.
Slice de CdpFrame con ID, ParentID, URL y Name de cada frame aplanado; error si la conexión es nula, Page.enable falla o la respuesta CDP es inesperada.

Ejemplo

conn, err := CdpConnect("localhost", 9222, "")
if err != nil {
    log.Fatal(err)
}
defer conn.Close()

frames, err := CdpListFrames(conn)
if err != nil {
    log.Fatal(err)
}
for _, f := range frames {
    fmt.Printf("id=%-40s parent=%-40s url=%s\n", f.ID, f.ParentID, f.URL)
}
// Salida ejemplo:
// id=ABCD1234  parent=          url=https://example.com
// id=EFGH5678  parent=ABCD1234  url=https://ads.example.com/iframe

Cuando usarla

Antes de evaluar JS en un iframe con CdpEvalInFrame: necesitas el frameID exacto que usa CDP, no el src del iframe. También útil para auditar la estructura de frames de una página o detectar iframes de terceros.

Gotchas

  • Requiere que la pestaña ya esté cargada; si se llama justo tras CdpNavigate en páginas con lazy-load de iframes, puede devolver un listado incompleto — espera a Page.loadEventFired o usa un breve delay.
  • Page.enable se llama internamente (idempotente); no hace falta llamarlo manualmente antes.
  • El frame raíz tiene ParentID vacío. Los iframes anidados tienen como ParentID el ID del frame contenedor.
  • Name puede ser vacío si el <iframe> no tiene atributo name.