Playwright-go启动Chromium:如何实现全屏并移除控制提示栏?
解决Playwright-Go中Chromium持久化上下文的全屏与控制提示问题
一、移除“Chrome正在被控制”提示栏
你遇到的提示栏问题源于参数拼写错误和缺少新版Chrome所需的自动化屏蔽参数,调整方案如下:
- 修正拼写错误:将
--ignore-deafault-args=enable-automation改为--ignore-default-args=enable-automation(原参数中deafault拼写错误,应为default) - 添加
--disable-blink-features=AutomationControlled参数,该参数可阻止Chrome检测到自动化环境,彻底屏蔽控制提示栏 - 保留
--disable-infobars参数作为兜底保障
二、实现真正全屏
当前参数组合存在冲突,且命令行参数可能因页面加载逻辑不生效,可通过两种方式解决:
方式1:调整命令行参数
移除--start-maximized,仅保留--kiosk(该参数本身就是强制全屏模式),--kiosk与--app搭配使用时,会直接以全屏状态打开目标应用页面,无需额外最大化参数。
方式2:通过Playwright API主动触发全屏
若命令行参数仍不生效,可在页面加载完成后调用页面全屏API,确保页面真正进入全屏状态:
// 启动上下文后获取当前页面 page := browser.Pages()[0] // 等待页面加载完成 _, err = page.WaitForNavigation(playwright.PageWaitForNavigationOptions{ WaitUntil: playwright.WaitUntilStateNetworkidle, }) if err != nil { // 处理导航错误 } // 触发页面全屏 err = page.RequestFullscreen() if err != nil { // 处理全屏错误 }
修改后的完整代码示例
browser, err := pw.Chromium.LaunchPersistentContext(userDataDir, playwright.BrowserTypeLaunchPersistentContextOptions{ Headless: playwright.Bool(false), Viewport: nil, Args: []string{ "--kiosk", "--app=https://youtube.com", "--no-zygote", "--no-sandbox", "--disable-infobars", "--hide-scrollbars", "--disable-setuid-sandbox", "--disable-dev-shm-usage", "--ignore-default-args=enable-automation", "--disable-blink-features=AutomationControlled", }, }) if err != nil { // 处理启动错误 } // 可选:主动触发页面全屏 page := browser.Pages()[0] _, err = page.WaitForNavigation(playwright.PageWaitForNavigationOptions{ WaitUntil: playwright.WaitUntilStateNetworkidle, }) if err == nil { err = page.RequestFullscreen() } if err != nil { // 处理全屏错误 }
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

