【发布时间】:2019-11-16 05:11:46
【问题描述】:
我正在尝试设置自定义下载路径,但 chrome 无论如何都会将文件放入典型的 Downloads 文件夹中。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
executablePath: 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe',
defaultViewport: {
width: 1920,
height: 1080
},
headless: false,
userDataDir: "./user_data"
});
const page = await browser.newPage();
await page.goto(
'https://example.com/page-with-the-file-link',
{ waitUntil: 'domcontentloaded' },
);
await page._client.send('Page.setDownloadBehavior', {
behavior: 'allow',
downloadPath: 'C:/Users/Me/Downloads/custom/folder/'
});
console.log('Start downloading');
await page.click('a.download-btn');
await page.waitFor(5000);
console.log('Complete');
await browser.close();
})();
因此,它会忽略 downloadPath 选项并将文件放入默认的 C:/Users/Me/Downloads 文件夹。
也不等待5秒,只有时间下载文件,点击下载链接后立即退出。
Start downloading
Complete
(node:51016) UnhandledPromiseRejectionWarning: Error: WebSocket is not open: readyState 3 (CLOSED)
at WebSocket.send (C:\Users\Me\Downloads\puppeteer\node_modules\ws\lib\websocket.js:329:19)
at WebSocketTransport.send (C:\Users\Me\Downloads\puppeteer\node_modules\puppeteer\lib\WebSocketTransport.js:60:14)
at Connection._rawSend (C:\Users\Me\Downloads\puppeteer\node_modules\puppeteer\lib\Connection.js:86:21)
at Connection.send (C:\Users\Me\Downloads\puppeteer\node_modules\puppeteer\lib\Connection.js:72:21)
at gracefullyCloseChrome (C:\Users\Me\Downloads\puppeteer\node_modules\puppeteer\lib\Launcher.js:194:20)
at Browser.close (C:\Users\Me\Downloads\puppeteer\node_modules\puppeteer\lib\Browser.js:255:31)
at Browser.<anonymous> (C:\Users\Me\Downloads\puppeteer\node_modules\puppeteer\lib\helper.js:112:23)
at C:\Users\Me\Downloads\puppeteer\test-download-file.js:97:18
at <anonymous>
(node:51016) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3)
(node:51016) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
为什么这个脚本在点击下载链接后就退出了,如何正确执行?有没有获取下载状态和监控进度的功能?
任何建议将不胜感激,谢谢!
【问题讨论】:
标签: javascript node.js google-chrome automation puppeteer