refactor(browser): migrate from go-rod to chromedp
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
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:
@@ -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("浏览器正在关闭")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user