refactor(browser): migrate from go-rod to chromedp
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful

- 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 <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-04-09 13:07:56 +08:00
parent 9b75295d19
commit 9f9b1ebac6

View File

@@ -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("浏览器正在关闭")
}