package browser import ( "fmt" "time" ) // CdpWaitLoad espera a que la página actual termine de cargar completamente. // Hace polling de document.readyState via Runtime.evaluate cada 200ms hasta // que sea "complete", o hasta que se agote el timeout. // Retorna error si el timeout se agota o si CdpEvaluate falla (conexion rota). func CdpWaitLoad(c *CDPConn, timeout time.Duration) error { if c == nil { return fmt.Errorf("cdp wait load: conexion nula") } if timeout <= 0 { timeout = 30 * time.Second } deadline := time.Now().Add(timeout) interval := 200 * time.Millisecond for time.Now().Before(deadline) { result, err := CdpEvaluate(c, "document.readyState") if err != nil { return fmt.Errorf("cdp wait load: error evaluando readyState: %w", err) } if result == "complete" { return nil } time.Sleep(interval) } return fmt.Errorf("cdp wait load: pagina no cargo despues de %s", timeout) }