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

Puppeteer出现TimeoutError:等待响应超时问题排查

解决Puppeteer中page.waitForResponse超时问题

针对你遇到的TimeoutError,大概率是以下几个操作环节出了问题,对应解决方法如下:

  • 响应URL匹配逻辑不准确
    很多时候接口请求会带参数(比如/Parcel/GetParcel?param=xxx),如果用精确字符串匹配https://www.asr.pima.gov/Parcel/GetParcel,会匹配不到实际请求。建议改用包含匹配,同时可加上请求方法判断(该接口大概率是POST请求):

    const targetResponse = await page.waitForResponse(response => 
      response.url().includes('/Parcel/GetParcel') && 
      response.request().method() === 'POST'
    );
    
  • 未触发目标请求
    waitForResponse是被动等待请求响应,必须先执行触发该接口请求的操作——这个接口应该是用户输入包裹编号后提交表单才会调用的,得先模拟输入和提交动作,再等待响应:

    // 先等待输入框加载完成
    await page.waitForSelector('#parcel-number-input');
    // 输入包裹编号
    await page.type('#parcel-number-input', '你的包裹编号');
    // 点击提交按钮触发请求
    await page.click('#submit-button');
    // 再等待目标响应
    const response = await page.waitForResponse(res => res.url().includes('/Parcel/GetParcel'));
    
  • 超时时间设置过短
    该政府网站的接口响应可能较慢,默认30秒的超时时间不够用,可手动延长超时时间:

    const response = await page.waitForResponse(
      res => res.url().includes('/Parcel/GetParcel'),
      { timeout: 60000 } // 改为60秒超时
    );
    
  • 反爬或页面加载问题
    部分政府网站有反爬机制,可能需要等待页面完全渲染、处理Cookie逻辑后才能正常触发请求。可以先等待页面关键元素加载完成,或者禁用缓存避免请求被拦截:

    await page.setCacheEnabled(false);
    await page.waitForNavigation({ waitUntil: 'networkidle2' });
    

获取到响应后,即可提取响应头和Cookie:

// 获取响应头
const headers = targetResponse.headers();
// 获取页面Cookie
const cookies = await page.cookies();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:40:40