page._client.send is not a function

使用 puppeteer 的时候想修改文件下载地址,在询问chatGPT后得到如下方案

const puppeteer = require('puppeteer');
const path = require('path');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  // 指定下载文件的位置为当前文件夹下的 download 目录
  const downloadPath = path.join(process.cwd(), 'download');
  await page._client.send('Page.setDownloadBehavior', {
    behavior: 'allow',
    downloadPath: downloadPath,
  });

  await page.goto('https://example.com');

  // 点击下载链接
  await page.click('a.download-link');

  // 等待文件下载完成
  await page.waitForEvent('download');

  await browser.close();
})();

但是报错 page._client.send is not a function
查询得知, puppeteer > 14 后 _client 属性 已失效,
修改下载路径的正确写法为

const client = await page.target().createCDPSession();
await client.send('Page.setDownloadBehavior', {
   behavior: 'allow',
   downloadPath: downloadPath,
});
```
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Puppeteer 中,你可以使用 `page._client.send()` 函数来模拟鼠标点击下载链接,并将文件保存到指定的目录。下面是一个示例代码片段,演示了如何使用 Puppeteer 下载文件: ```javascript const puppeteer = require('puppeteer'); const fs = require('fs'); async function downloadFile() { const browser = await puppeteer.launch(); const page = await browser.newPage(); // 跳转到包含下载链接的页面 await page.goto('https://example.com'); // 点击下载链接 await page.evaluate(() => { // 替换这里的选择器为下载链接的实际选择器 const downloadLink = document.querySelector('#download-link'); downloadLink.click(); }); // 等待一段时间,确保文件下载完成 await page.waitForTimeout(5000); // 获取文件名 const fileName = await page.evaluate(() => { // 替换这里的选择器为下载文件的实际选择器 const fileElement = document.querySelector('#file-element'); return fileElement.getAttribute('href').split('/').pop(); }); // 移动文件到指定目录 const downloadPath = '/path/to/save/file/'; fs.renameSync('./Downloads/' + fileName, downloadPath + fileName); await browser.close(); } downloadFile(); ``` 上述代码中,你需要替换示例中的选择器和文件路径为实际的值。其中,`#download-link` 是下载链接的选择器,`#file-element` 是包含文件信息的元素选择器,`/path/to/save/file/` 是你希望保存文件的目录路径。 注意:在 Puppeteer 默认的配置中,下载的文件会保存在项目根目录下的 `Downloads` 文件夹中。如果你希望更改下载文件的保存路径,可以修改 `userDataDir`、`defaultViewport` 和 `executablePath` 等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值