【发布时间】:2022-07-27 02:12:30
【问题描述】:
我有一个使用 node.js 和 puppeteer 制作的脚本,它从按钮下载文件(不会重定向到 url),所以现在我正在使用 await await page.waitForTimeout(1000); 等待下载完成但它有一些缺陷,例如:
根据连接情况,完成下载可能需要超过 1000 毫秒的时间,也可能需要更少的时间,这与完成下载所需的时间相比没有意义。
我的问题是,有没有办法使用 Node+Puppeteer 等待下载完成?我曾尝试使用 waitUntil: 'networkidle0 和 networkidle2,但似乎都在等待。
代码如下:
const path = require('path');
const puppeteer = require('puppeteer');
(async () => {
/* Initialize some variables */
const browser = await puppeteer.launch();
// Instantiates a new page
const page = await browser.newPage();
// Gets current path
const downloadPath = path.resolve('./');
// Specifies wether it allows downloading multiple files or not
await page._client.send('Page.setDownloadBehavior',
{behavior: 'allow', downloadPath: downloadPath});
// Goes to My Website
await page.goto('http://localhost:8080/mywebsite');
// Exports to CSV
await page.waitForSelector("#W0009EXPORTAXLS > a > i", {visible: true});
await page.tap("#W0009EXPORTAXLS > a > i");
await page.waitForTimeout(1000);
// Log
console.log('File exported.');
// Closes the browser
await browser.close();
})();
【问题讨论】:
标签: javascript node.js puppeteer