我想使用chromless api捕获整页截图。 (如同折叠中的所有内容一样,不仅仅是当前视口。
为了做到这一点,我想人们会计算网页的高度(使用document.body.scrollHeight
),并将视口高度设置为该值。
这是我目前所拥有的,我正在测试他们的demo site:
const chromeless = new Chromeless({ remote: true })
const screenshot = await chromeless
.goto('https://www.graph.cool')
.setViewport({width: 1024, height: 800, scale: 1})
.evaluate(() => {
const height = document.body.scrollHeight;
return height
})
.setViewport({width: 1024, height: height, scale: 1})
.screenshot()
console.log(screenshot)
await chromeless.end()
我认为(希望)我的javascript没问题,也许这是API的限制?是否可以从无头网络浏览器访问document
对象?
以下是有关评估以供参考的文档: https://github.com/graphcool/chromeless/blob/master/docs/api.md#api-evaluate
答案 0 :(得分:1)
可以通过抓取文档的高度来截取整页(demo):
const chromeless = new Chromeless({ remote: true })
const scrollHeight = await chromeless
.goto('https://www.graph.cool')
.evaluate(() => document.body.scrollHeight)
console.log(`The document's height is ${scrollHeight}px`)
const screenshot = await chromeless
.setViewport({width: 1024, height: scrollHeight, scale: 1})
.screenshot()
console.log(screenshot)
await chromeless.end()
需要注意的是,我们必须从evaluate()
调用中返回高度并将其分配给变量scrollHeight
,我们可以使用它来设置视口的高度。