You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Playwright获取页面中同一URL的所有响应?

捕获同一URL的所有响应解决方案

原代码使用page.waitForResponse只能获取第一个匹配条件的响应,要收集所有10次data/api.json的成功响应,需要通过监听页面的response事件来实现,具体代码如下:

// 初始化数组存储所有符合条件的响应
const matchingResponses = [];

// 监听response事件,收集符合条件的响应
page.on('response', (response) => {
  if (response.url().includes('data/api.json') && response.status() === 200) {
    matchingResponses.push(response);
  }
});

// 触发页面操作(比如导航到目标页面,或是触发请求的交互动作)
await page.goto('你的目标页面URL');

// 自定义等待逻辑,直到收集到10个目标响应
await new Promise((resolve) => {
  const checkInterval = setInterval(() => {
    if (matchingResponses.length === 10) {
      clearInterval(checkInterval);
      resolve();
    }
  }, 500);
});

// 批量获取所有响应的JSON数据并合并
const allData = await Promise.all(
  matchingResponses.map(response => response.json())
);

// 输出合并结果或进行后续处理
console.log('合并后的所有响应数据:', allData);

关键说明

  • page.on('response')会监听页面发出的所有响应,每次响应触发时执行回调,我们在回调里筛选目标URL的成功响应并存储
  • 等待逻辑可根据实际场景调整:如果请求是页面加载时自动发出的,也可以用page.waitForLoadState('networkidle')替代自定义定时器;如果是用户操作触发的请求,要确保在触发操作后再执行等待逻辑
  • Promise.all能并行处理所有响应的JSON解析,提升处理效率

内容的提问来源于stack exchange,提问作者wanfujinan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:52:08