--- id: cdp_activate_tab_go_browser name: cdp_activate_tab kind: function lang: go domain: browser purity: impure version: 1.0.0 tested: false description: "Pone una pestaña Chrome en foreground (foco) por su ID via GET /json/activate/. Sin WebSocket — solo HTTP. Útil para traer al frente una pestaña específica antes de capturar pantalla o interactuar con ella." tags: [cdp, browser, tabs, navegator] signature: "func CdpActivateTab(host string, port int, tabID string) error" uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: error_go_core imports: [] file_path: "functions/browser/cdp_list_tabs.go" example: | tabs, _ := browser.CdpListTabs("localhost", 9222) // Activar la primera pestaña cuyo título contenga "Dashboard" for _, t := range tabs { if strings.Contains(t.Title, "Dashboard") { _ = browser.CdpActivateTab("localhost", 9222, t.ID) break } } params: - name: host desc: "Hostname de la instancia Chrome (vacío = localhost)" - name: port desc: "Puerto CDP de remote debugging (habitualmente 9222)" - name: tabID desc: "ID de la pestaña a activar, obtenido de CdpTab.ID via CdpListTabs" output: "nil si la pestaña pasó a foreground correctamente; error si tabID está vacío, la conexión falla o Chrome devuelve status != 200" --- ## Ejemplo ```go // Listar tabs y traer al frente la que corresponda a una URL concreta tabs, err := browser.CdpListTabs("localhost", 9222) if err != nil { log.Fatal(err) } for _, t := range tabs { if t.URL == "https://metabase.local/dashboard/1" { if err := browser.CdpActivateTab("localhost", 9222, t.ID); err != nil { log.Printf("error activando tab %s: %v", t.ID, err) } break } } ``` ## Cuando usarla Antes de hacer un screenshot o interactuar via CDP con una pestaña concreta que podría estar en segundo plano. También útil en dashboards que muestran el inventario de pestañas y necesitan enfocar una al hacer clic. ## Gotchas - No requiere conexión WebSocket previa; usa HTTP puro contra `/json/activate/`. - Solo cambia el foco dentro del contexto CDP; si la ventana de Chrome está minimizada a nivel de OS, `activate` la pone como pestaña activa dentro de Chrome pero no restaura la ventana. - El ID debe obtenerse de `CdpListTabs` — no es el índice visible del tab, es el UUID interno de Chrome. - Si el tabID no existe, Chrome devuelve un status HTTP distinto de 200 y la función retorna error.