旁其
Puppeteer异常处理
从⼀个⽣成 PDF 的需求中接触到了 Puppeteer ,随着使⽤场景的深⼊,异常问题也越发难以处理。索性纪录⼀下摸索过程,供新⼿参考学习。
⼀、Chromium revision is not downloaded
1UnhandledPromiRejectionWarning: Unhandled promi rejection (rejection id: 1): Error: Chromium revision is not downloaded. Run "npm install" or "yarn install”
遇到这个问题,说明你并没有成功下载 Chromium,(需要翻墙)可以解决你的问题。⼆、Unhandled promi rejection
需要使⽤ catch 处理异常,所以你需要这么处理:
1 2 3 4 5 6 7 8 9 10 11 12const puppeteer = require('puppeteer');
(async () => {
四六级在线const browr = await puppeteer.launch({
transactionid
executablePath: 'chromium/Chromium.app/Contents/MacOS/Chromium', headless: true
});
const page = wPage();
('jartto.wang');
alevinawait page.screenshot({path: 'temp/blog.png'});
await browr.clo();
})().catch(error => console.log('error: ', ssage));
最新大学排行榜重点关注最后⼀⾏即可。
三、spawn EACCES
没有权限,需要执⾏:
1sudo chmod -R a+rwx chromium/Chromium.app
之后请设置正确的引⽤路径:
1executablePath: 'chromium/Chromium.app/Contents/MacOS/Chromium',fuels
四、PrintToPDF is not implemented
出现这个问题,是因为 headless: fal:
1 2 3const browr = await puppeteer.launch({ headless: fal
});
官⽅⽂档中是这么说的:
daleyNOTE Generating a pdf is currently only supported in Chrome headless.
五、⽣成 PDF 乱码问题
⼩技巧:如果你发现⽆头打印异常,可以将设置改掉 headless: fal,通过调试⼯具打开。
六、在 Docker 中使⽤
在 Docker 中使⽤ Puppeteer 稍显复杂,因为其 node 库中⾃带的 Chromium 缺少⼀些依赖。这些依赖在桌⾯环境中⼀般都已⾃带,但是在Docker 的 node 源镜像例如 node-alpine 或者 node-slim 是缺失的。所以,在 Docker 中使⽤ Puppeteer 需要⾸先安装这些缺失的依赖。
具体细节,请移步。
七、更改默认视⼝
veja1await page.tViewport({width: 1024, height: 880});
⼋、设置 cookie
1 2 3 4 5 6 7 8 9const COOKS =[
{
'domain': 'jartto.wang',
'name': 'ur',
'value': 'jartto',英文发音规则
经济技术开发区英文
}
]
await page.tCookie(...COOKS);
九、模拟点击
1 2 3 4 5 6// 输⼊框 id,搜索关键字 jartto
pe('#index-kw', 'jartto');
// 模拟点击提交按钮
await page.click('#index-bn');
// 跳转等待时间
await page.waitForNavigation({ timeout: 3000 });