今天,我将 Chrome 浏览器更新到最新版本 (129)。更新后,在无头模式下运行 Chrome 会产生不寻常的结果:出现一个空白的白色窗口,与浏览器大小匹配。我在 Windows 上使用 Puppeteer 和 Selenium 与 Chrome 129。
为什么会出现这个空白窗口?这是 Chrome 129 的一个错误吗?
测试结果:
Chrome128 | Chrome129 | Chrome130 | |
---|---|---|---|
木偶师(v23.4.0) | 哦 | 十 | 哦 |
硒(v4.0) | 哦 | 十 | 哦 |
剧作家(v1.47.1) | 哦 | 十 | 哦 |
2
最佳答案
3
根据,您必须使用 Chrome 的新无头模式来避免此问题。
Chrome 的选项如下:--headless=new
在 Python 中,设置该选项如下:
options.add_argument("--headless=new")
的所有 Stack Overflow 评论,您会发现旧的无头模式将在今年退役,这可能意味着削减对它的支持,而不是为它修复新的问题,比如这个。
根据,Chromedriver 可能存在一个真正的错误,需要先修复。
以下是我针对该错误的临时修复:
--window-position=-2400,-2400
options.add_argument("--window-position=-2400,-2400")
(我将窗口移出屏幕很远,这样就看不见了。)
2
-
我尝试了“–headless=new”选项。但它显示相同的错误。chrome128 和 chrome130 没有问题。只有 chrome129 有错误。
–
-
暂时使用
--window-position=-2400,-2400
。Chromium 团队尚未修复 129 中的错误。
–
|
尝试新的无头模式标志:–headless=new
const browser = await puppeteer.launch({ headless: true, // 使用传统无头模式 args: [‘–headless=chrome’, ‘–disable-gpu’, ‘–no-sandbox’] });
可能的原因:Chrome 129 无头模式行为改变:
Chrome 的无头模式在最近的版本中发生了重大变化。自 Chrome 109 以来,有一种名为无头模式 v2 (–headless=new) 的新模式,它改变了渲染的处理方式。Chrome 129 可能强制或进一步修改了此行为。缺少或不正确的标志:
空白窗口通常表示未传递无头模式的正确标志。无头模式需要特定标志来确保浏览器正确运行而不呈现可见窗口。Puppeteer/Selenium 的渲染问题:
Puppeteer 和 Selenium 可能需要更新才能处理 Chrome 129 无头模式的变化。如果它们不是最新的或未针对最新的 Chrome 版本正确配置,渲染可能会失败,导致窗口空白。驱动程序或兼容性问题:
Selenium 和 Puppeteer 使用的 ChromeDriver 可能与 Chrome 129 不完全兼容,尤其是在无头模式行为发生变化的情况下。确保 ChromeDriver 更新到与 Chrome 129 匹配的最新版本至关重要。
1
-
这并不是什么新鲜事 + 无论如何问题仍然存在。
–
|
作为临时解决方案,您可以将浏览器版本回滚到 128 并运行
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
2
-
这是答案还是在提问?如果您想解释如何禁用该功能,也许可以您的帖子并使用清晰的语言,例如“要禁用该功能,请转到 chrome://flags/#enable-lens-region-search 并禁用镜头覆盖”。
– -
一旦你澄清了帖子,@我,我会删除反对票。目前,这不是一个合适的答案。
–
|
–
–
|