--- id: cdp_get_text_in_frame_go_browser name: cdp_get_text_in_frame kind: function lang: go domain: browser purity: impure version: 1.0.0 tested: false description: "Devuelve el texto visible (innerText) del documento de un iframe concreto componiendo sobre CdpEvalInFrame en un mundo aislado CDP, sin parsear HTML crudo. Trunca a maxBytes con corte rune-safe igual que CdpGetText." tags: [browser, cdp, iframe, frame, text, navegator] signature: "func CdpGetTextInFrame(c *CDPConn, frameID string, maxBytes int) (string, error)" uses_functions: [cdp_eval_in_frame_go_browser] uses_types: [] returns: [] returns_optional: false error_type: error_go_core imports: [] file_path: "functions/browser/cdp_get_text_in_frame.go" example: | conn, _ := CdpConnect("localhost", 9222, "") frames, _ := CdpListFrames(conn) text, err := CdpGetTextInFrame(conn, frames[1].ID, 4096) fmt.Println(text) // texto visible del primer iframe, truncado a 4096 bytes params: - name: c desc: "Conexión CDP activa obtenida con CdpConnect." - name: frameID desc: "ID del frame cuyo texto visible se quiere leer; obtenido de CdpListFrames (campo CdpFrame.ID)." - name: maxBytes desc: "Límite de bytes del texto devuelto. Si maxBytes > 0 trunca con corte rune-safe y añade un sufijo con el total original; si maxBytes <= 0 no hay límite." output: "String con el innerText visible del documento del iframe (document.body.innerText, o document.documentElement.innerText si no hay body), opcionalmente truncado a maxBytes; error si la conexión es nula, el frameID está vacío o la evaluación CDP del frame falla." --- ## Ejemplo ```go conn, err := CdpConnect("localhost", 9222, "") if err != nil { log.Fatal(err) } defer conn.Close() // 1. Listar frames para localizar el iframe deseado frames, err := CdpListFrames(conn) if err != nil { log.Fatal(err) } // 2. Leer el texto visible de cada iframe (saltando el frame raíz) for _, f := range frames { if f.ParentID == "" { // frame raíz, no es un iframe continue } text, err := CdpGetTextInFrame(conn, f.ID, 4096) if err != nil { log.Printf("error en frame %s: %v", f.ID, err) continue } fmt.Printf("=== iframe %s (%s) ===\n%s\n", f.ID, f.URL, text) } ``` ## Cuando usarla Cuando necesites leer los datos visibles dentro de un iframe sin parsear HTML crudo: extraer el contenido textual de un widget embebido, un panel de pago, un captcha de texto o cualquier documento dentro de un `