我正在使用Puppeteer,并且想访问HeadlessExperimental域。
我可以启用域,但是如果我尝试致电beginFrame,则会收到以下错误消息:
content-generator-api-0 | Error: Protocol error (HeadlessExperimental.beginFrame):
Command is only supported if BeginFrameControl is enabled.
这是我正在运行的代码
const browser = await puppeteer.launch(...)
const page = await browser.newPage()
await page.goto(url)
const cdp = await page.target().createCDPSession()
await cdp.send('HeadlessExperimental.enable')
const frameData = await cdp.send('HeadlessExperimental.beginFrame', {screenshot: {}})
我设置了以下铬标志,如"Rendering in Headless Chrome"
中所建议'--enable-surface-synchronization',
'--run-all-compositor-stages-before-draw',
'--disable-threaded-animation',
'--disable-threaded-scrolling',
'--disable-checker-imaging',
从chromium.org forum中找到的描述来看,我的猜测是我需要修改Puppeteer库以支持使用BeginFrameControl创建目标。
当前,仅在无头模式下支持BeginFrameControl 并且只能在目标创建时启用。
此外,Puppeteer的稳定发行版运行的是铬修订版594312,但似乎612061之前没有修补HeadlessExperimental,而current chromium releases的任何版本中都没有此补丁
>答案 0 :(得分:1)
将--enable-begin-frame-control
开关添加到Chrome启动参数