From 9f9b1ebac60e4821430cad7ea3d33d501dd32591 Mon Sep 17 00:00:00 2001 From: mapleafgo Date: Thu, 9 Apr 2026 13:07:56 +0800 Subject: [PATCH] refactor(browser): migrate from go-rod to chromedp - Replace go-rod with chromedp for browser automation - Use project's unified zap logger instead of default logging - Add proper error handling for browser launch failures - Add logging for browser lifecycle events (start, close) - Keep same Kiosk mode functionality with chromedp flags Co-authored-by: Qwen-Coder --- pkg/browser/browser.go | 50 ++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/pkg/browser/browser.go b/pkg/browser/browser.go index 5bffcac..c73be4b 100644 --- a/pkg/browser/browser.go +++ b/pkg/browser/browser.go @@ -2,27 +2,39 @@ package browser import ( "context" - "github.com/go-rod/rod" - "github.com/go-rod/rod/lib/launcher" - "github.com/go-rod/rod/lib/launcher/flags" + + "github.com/chromedp/chromedp" + "go.uber.org/zap" ) -// OpenApp 用APP模式打开网页 -func OpenApp(c context.Context, url string) { - path, _ := launcher.LookPath() - l := launcher.NewAppMode(url). - Delete(flags.Env). - Set("kiosk"). - Set("hide-scrollbars"). - Set("disable-sync"). - Set("disable-features", "GoogleSignin,IdentityConsistency,OmniboxUIExperimentation,GoogleSearch,Autofill,SafeSearch,SpeechRecognition"). - Delete("disable-site-isolation-trials"). - Bin(path) - p := l.MustLaunch() - defer l.Cleanup() +// OpenApp 用 Kiosk 模式打开网页 +func OpenApp(ctx context.Context, url string) { + // 配置浏览器选项 + opts := append(chromedp.DefaultExecAllocatorOptions[:], + chromedp.Flag("kiosk", true), + chromedp.Flag("hide-scrollbars", true), + chromedp.Flag("disable-sync", true), + chromedp.Flag("disable-features", "GoogleSignin,IdentityConsistency,OmniboxUIExperimentation,GoogleSearch,Autofill,SafeSearch,SpeechRecognition"), + chromedp.Flag("start-maximized", true), + ) - b := rod.New().ControlURL(p).MustConnect() - defer b.MustClose() + // 创建分配器上下文 + allocCtx, allocCancel := chromedp.NewExecAllocator(ctx, opts...) + defer allocCancel() - <-c.Done() + // 创建浏览器上下文(使用项目统一的 zap 日志系统) + browserCtx, browserCancel := chromedp.NewContext(allocCtx, + chromedp.WithLogf(zap.S().Debugf), + ) + defer browserCancel() + + // 启动浏览器并导航 + if err := chromedp.Run(browserCtx, chromedp.Navigate(url)); err != nil { + zap.S().Errorw("浏览器启动失败", "error", err, "url", url) + return + } + + zap.S().Infow("浏览器已启动", "url", url) + <-ctx.Done() + zap.S().Info("浏览器正在关闭") }