木偶无头实验

时间:2018-10-14 18:57:17

标签: google-chrome-devtools puppeteer

我正在使用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的任何版本中都没有此补丁 >

1 个答案:

答案 0 :(得分:1)

--enable-begin-frame-control开关添加到Chrome启动参数