让前端飞Web前端之路

Puppeteer 系列踩坑日志—1—批量截图变白

2020-03-18  本文已影响0人  前端大白96

在平时使用puppeteer最多的就是截图了(每日批量自动截图),我的目标是X宝的一些店铺首页,这次遇到的问题就是在一些无线端,商家的页面非常长,甚至多的达到了6-10万像素。经常出现白屏或者残缺现象。

第一坑:加载问题?
image-20200317183752809.png
第二坑:截图问题?
let deleteFile = [...imagesArr];
await gmMerge(foldname,pathName,imagesArr)


function gmMerge(foldname,pathName,imagesArr) {
    return new Promise((res, rej) => { gm(imagesArr.shift()).append(...imagesArr).write(`./screenshot/${foldname}/${pathName}.png`, function (err) {
            if (err) {
                console.log('截图合并失败!')
                rej('截图合并失败!')
            } else {
                console.log('完整截图生成成功!');
                res('完整截图生成成功!');

            }
        });

    })
}

简单解释下,要删除的复制个小本本出来,因为我们需要将第一张截图作为初始画布,然后后续的全部加进来,我这里偷懒使用了shift方法,这样的话等会再去删除 就会漏掉,因此我这样做了。你有更简单的办法也可以,这里没什么要讲。主要是我放入了promise里面,这样的话 await gm合并函数即可。

其他坑:
let footer = await page.$('#footer');    //获取到DOM对象,身上都有screenshot方法
footer.screenshot({path:'demo.png'});

如有遇到其他问题,评论下方可以联系我,共同学习排坑。

上一篇 下一篇

猜你喜欢

热点阅读