如何使用Puppeteer下载href为javascript:void(0);的链接文件?
问题解决:Puppeteer点击
javascript:void(0)的a标签无法触发下载 你的问题核心在于这个a标签的href是javascript:void(0)——它本身不指向任何真实的文件资源,点击逻辑完全依赖绑定的JS事件监听器,之前添加download属性的方法自然无效,因为download仅对包含真实可下载资源URL的a标签生效。
试试下面几种针对性解决方案:
用Puppeteer原生点击方法模拟真实交互:
await page.click('a');这个方法会模拟真实用户的点击行为,更易触发元素上绑定的各类事件。
触发完整鼠标事件序列:
部分网站会监听mousedown、mouseup这类前置事件,单纯调用click可能无法触发完整逻辑:await page.evaluate(() => { const link = document.querySelector('a'); link.dispatchEvent(new MouseEvent('mousedown', { bubbles: true })); link.dispatchEvent(new MouseEvent('mouseup', { bubbles: true })); link.dispatchEvent(new MouseEvent('click', { bubbles: true })); });拦截并处理下载请求:
如果点击后页面会动态生成下载链接,可直接监听页面的下载事件并指定保存路径:page.on('download', async (download) => { await download.saveAs('File.pdf'); // 自定义保存的文件名 }); await page.click('a');
内容的提问来源于stack exchange,提问作者Nawrin
相关产品推荐
相关产品推荐

