Files
Developer 7d5339acad refactor: eliminar time.Sleep innecesarios
Reemplaza todos los time.Sleep arbitrarios por esperas basadas en eventos CDP.

Cambios:
- examples/basic.go: usa WaitUntil en Navigate
- cmd/navegar.go: elimina sleeps después de acciones
- cmd/buscar.go y buscar_v2.go: usa networkidle
- cmd/list_blog.go: elimina sleep innecesario
- main.go: usa WaitUntil load

Mejora performance y robustez al no esperar más de lo necesario.

Archivos: examples/basic.go, cmd/*.go, main.go
2026-03-25 00:48:54 +01:00

90 lines
2.2 KiB
Go

package main
import (
"context"
"log"
"os"
"navegator/pkg/browser"
)
func main() {
ctx := context.Background()
// Crear configuración con perfil personalizado
config := browser.DefaultConfig()
config.ProfileName = "my-agent-profile"
// Si quieres modo visible, desactiva headless
// config.StealthFlags.Headless = false
// Lanzar navegador
log.Println("Lanzando navegador...")
b, err := browser.Launch(ctx, config)
if err != nil {
log.Fatalf("Error al lanzar navegador: %v", err)
}
defer b.Close()
log.Printf("Navegador iniciado. Perfil: %s\n", b.ProfilePath())
log.Printf("Debug URL: %s\n", b.DebugURL())
// Navegar a una página
log.Println("Navegando a example.com...")
opts := browser.DefaultNavigateOptions()
opts.WaitUntil = "load" // Esperar evento de carga completa
if err := b.Navigate(ctx, "https://example.com", opts); err != nil {
log.Fatalf("Error al navegar: %v", err)
}
// Obtener HTML
log.Println("Obteniendo HTML...")
html, err := b.GetHTML(ctx, "")
if err != nil {
log.Fatalf("Error al obtener HTML: %v", err)
}
log.Printf("HTML length: %d bytes\n", len(html))
// Obtener texto del h1
log.Println("Obteniendo texto del h1...")
text, err := b.GetText(ctx, "h1")
if err != nil {
log.Fatalf("Error al obtener texto: %v", err)
}
log.Printf("H1 text: %s\n", text)
// Tomar screenshot
log.Println("Tomando screenshot...")
screenshot, err := b.Screenshot(ctx, false)
if err != nil {
log.Fatalf("Error al tomar screenshot: %v", err)
}
if err := os.WriteFile("screenshot.png", screenshot, 0644); err != nil {
log.Fatalf("Error al guardar screenshot: %v", err)
}
log.Println("Screenshot guardado en screenshot.png")
// Ejecutar JavaScript
log.Println("Ejecutando JavaScript...")
result, err := b.Evaluate(ctx, "window.location.href")
if err != nil {
log.Fatalf("Error al ejecutar JavaScript: %v", err)
}
log.Printf("Current URL: %v\n", result.Value)
// Cookies
log.Println("Obteniendo cookies...")
cookies, err := b.GetCookies(ctx)
if err != nil {
log.Fatalf("Error al obtener cookies: %v", err)
}
log.Printf("Cookies encontradas: %d\n", len(cookies))
for _, cookie := range cookies {
log.Printf(" - %s = %s\n", cookie.Name, cookie.Value)
}
log.Println("Ejemplo completado exitosamente!")
}