5b10b419a2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.2 KiB
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. |
|
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) } |
|
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
CdpNavigateen páginas con lazy-load de iframes, puede devolver un listado incompleto — espera aPage.loadEventFiredo usa un breve delay. Page.enablese llama internamente (idempotente); no hace falta llamarlo manualmente antes.- El frame raíz tiene
ParentIDvacío. Los iframes anidados tienen comoParentIDelIDdel frame contenedor. Namepuede ser vacío si el<iframe>no tiene atributoname.