操纵人,听网络响应的变化

时间:2018-08-09 08:09:55

标签: javascript puppeteer

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

我想听所有的http响应,每个URL都需要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,有时我却看不到。

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

1 个答案:

答案 0 :(得分:1)

除非您试图获取匹配请求对象的URL,否则无需调用response.request()

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

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);
});