javascript - Puppeteer ,监听网络响应变化

标签 javascript puppeteer

我正在使用 Puppeteer api ( https://github.com/GoogleChrome/puppeteer ) 用于自动化测试。

我想监听所有的 http 响应,需要每个响应的 url 和响应数据。

我尝试使用 page.on('response') 函数:

 page.on('response', response => {
      response.text().then( textBody=> {
             const req = response.request();;
             console.log(req.url())
             console.log(textBody)
      });
})

是否应在“waitForSelector”函数中进行处理,以标记数据已准备就绪?

我尝试这样做。

问题是有时我看不到任何 console.log,有时我看到。

我很高兴知道我做错了什么?

最佳答案

无需调用response.request() ,除非您正在尝试获取匹配请求对象的 URL。

以下解决方案可以正常工作:

page.on('response', response => {
  console.log('Response URL:', response.url());

  response.text().then(data => {
    console.log('Response Text:');
    console.log(data);
  });
});

如果您仍然遇到问题,可能是因为关联的请求失败了。

您可以通过监听 requestfailed 来检查此错误事件并记录结果:

page.on('requestfailed', request => {
  console.log('Failed Request URL:', request.url());
  console.log('Failed Request Error Message:', request.failure().errorText);
});

关于javascript - Puppeteer ,监听网络响应变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51761899/

相关文章:

javascript - Puppeteer:抓取有时有效,有时会失败并出现 TypeError

javascript - 为javascript中的全局变量赋值

javascript - 如何从父组件设置Ember组件的内部状态?

javascript - 检测输入元素是否在 ReactJS 中聚焦

javascript - 如何让点击操作等待输入框填满值?

puppeteer - 如何使用 Apify 登录站点并单击按钮?

javascript - 找不到指定 id 未定义的上下文

javascript - Angular 错误

javascript - 无法点击提交按钮

javascript - 生成 PDF 时,Puppeteer 不会加载本地存储的图像