Javascript 未在Puppeter中加载画布绘图

Javascript 未在Puppeter中加载画布绘图,javascript,reactjs,puppeteer,google-chrome-headless,Javascript,Reactjs,Puppeteer,Google Chrome Headless,我需要生成搜索引擎优化快照。 我使用的是木偶无头铬合金。 在主页上,我有一个画布,一旦组件安装完毕,我就开始在画布上绘制我的主站点 问题是,当我从Puppeter获得html时,画布上的图形不存在 在木偶剧代码中,我等待内容未加载 html = await page.content() 我怎样才能让木偶演员等到点画布没有绘制。page.content将只返回DOM的HTML表示。要获取DOM中画布的实际图像,可以使用函数。这将返回以base64编码字符串显示的图像 代码示例 const dat

我需要生成搜索引擎优化快照。 我使用的是木偶无头铬合金。 在主页上,我有一个画布,一旦组件安装完毕,我就开始在画布上绘制我的主站点

问题是,当我从Puppeter获得html时,画布上的图形不存在

在木偶剧代码中,我等待内容未加载

html = await page.content()
我怎样才能让木偶演员等到点画布没有绘制。

page.content将只返回DOM的HTML表示。要获取DOM中画布的实际图像,可以使用函数。这将返回以base64编码字符串显示的图像

代码示例

const dataUrl=wait page.evaluate=>{ const canvas=document.querySelectorcanvas-selector; 返回canvas.toDataURL; }; //dataUrl如下所示:data:image/png;伊夫堡64号基地。。。 const base64String=dataUrl.substrdataUrl.indexOf','+1;//在逗号后获取所有内容 常量imgBuffer=Buffer.frombase64String,“base64”;// fs.writeFileSync'image.png',imgBuffer; evaluate调用将返回图像的base64编码缓冲区。您需要首先从中删除数据:…,然后将其放入缓冲区。然后可以以任何其他方式保存或处理缓冲区

page.content将只返回DOM的HTML表示形式。要获取DOM中画布的实际图像,可以使用函数。这将返回以base64编码字符串显示的图像

代码示例

const dataUrl=wait page.evaluate=>{ const canvas=document.querySelectorcanvas-selector; 返回canvas.toDataURL; }; //dataUrl如下所示:data:image/png;伊夫堡64号基地。。。 const base64String=dataUrl.substrdataUrl.indexOf','+1;//在逗号后获取所有内容 常量imgBuffer=Buffer.frombase64String,“base64”;// fs.writeFileSync'image.png',imgBuffer;

evaluate调用将返回图像的base64编码缓冲区。您需要首先从中删除数据:…,然后将其放入缓冲区。然后可以以任何其他方式保存或处理缓冲区

您是想等到事情发生,还是想从画布上获取图像?因为您无法通过page.content从画布读取图像。这只会返回HTML代码。有些东西是在画布上绘制的,我尝试等待了大约20秒,但仍然无法获得画布上绘制的内容,尽管在无头chrome中,我可以看到画布上的图形。似乎Puppeter只是复制了html。添加了一个答案,向您展示如何获取画布中显示的图像:向我们展示如何获取快照。您是要等到发生了什么事情,还是要从画布中获取图像?因为您无法通过page.content从画布读取图像。这只会返回HTML代码。有些东西是在画布上绘制的,我尝试等待了大约20秒,但仍然无法获得画布上绘制的内容,尽管在无头chrome中,我可以看到画布上的图形。似乎Puppeter只是复制了html。添加了一个答案,向您展示如何获取画布中显示的图像:向我们展示如何获取快照。这根本不是问题所要求的。@Kaido查看我在上面要求澄清的注释。他说我不能得到画布上画的东西。不过,我添加了一个关于page.content的句子。@kaido澄清一下:我在使用page.content获取画布图像时阅读了这个问题。我阅读这个问题是因为我想拍摄我的页面的快照,该页面也包含画布绘图。@ThomasDondorf有办法创建带有白色背景的图像。@?这根本不是问题所要求的。@Kaido请看我在上面要求澄清的评论。他说我不能得到画布上画的东西。不过,我添加了一个关于page.content的句子。@kaido澄清一下:我在使用page.content获取画布图像时阅读了这个问题。我阅读这个问题是因为我想拍摄我的页面的快照,该页面也包含画布绘图。@ThomasDondorf有办法创建带有白色背景的图像。@?