即使路径不存在也保存截图?

时间:2020-06-17 11:10:14

标签: puppeteer

await page.screenshot({path: `results/screenshots/${projectname}/${date}/SiteAdded.png`});

执行上面的代码行时,它失败,并显示以下错误

ENOENT: no such file or directory, open 'results/screenshots/...../SiteAdded.png'

是正确的,因为该路径尚未出现在系统上。无论如何,我是否可以用来告诉puppeteer先创建嵌套文件夹然后保存文件(如标记)?

我的解决方法是先使用其他API创建文件夹,然后将路径传递给page.screenshot,但是我想知道是否有任何直接方法。

更新

根据评论中的建议在Github项目中提交了跟踪问题。

这里是跟踪器:https://github.com/puppeteer/puppeteer/issues/6093(如果有兴趣的话)。

2 个答案:

答案 0 :(得分:1)

没有这样的Chromium / puppeteer标志或page.screenshot选项可用。唯一的方法是在puppeteer保存屏幕快照之前,使用Node的“ fs”创建目录。

fs.mkdirSync可以做到:

const fs = require('fs');

[...] 

const path = `results/screenshots/${projectname}/${date}`;

fs.mkdirSync(path);
await page.screenshot({ path: `${path}/SiteAdded.png` });

答案 1 :(得分:0)

很抱歉无法回复评论(在此处为新手),但是除了@theDavidBarton的建议外,您可以事先检查目录是否存在或使用try / catch。 例如:

const fs = require('fs');

[...] 
const path = `results/screenshots/${projectname}/${date}`;

try {
     await page.screenshot({ path: `${path}/SiteAdded.png` });
} catch(err) {
     fs.mkdirSync(path);
     await page.screenshot({ path: `${path}/SiteAdded.png` });
}