首页 > 解决方案 > Puppeteer:TimeoutError:在 Timeout.setTimeout (/home/site/wwwroot/node_modules/puppeteer/lib/helper.js) 等待事件时超时

问题描述

我正在尝试确定如何解决此错误。我的网站和测试一直存在超时问题。它并不一致,每次都是不同的站点。我以为我通过使用该page.setDefaultTimeout(0);方法解决了它 - 但现在我得到了一个指向lib/helper.js.

不确定从这里去哪里。我想将超时时间延长到几分钟,这样在尝试加载时它不会在一分钟内出错。

"ErrorMessage": "Timeout exceeded while waiting for event",
                "ErrorStack": "TimeoutError: Timeout exceeded while waiting for event
    at Timeout.setTimeout (/home/site/wwwroot/node_modules/puppeteer/lib/helper.js:196:24)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:290:5)
  -- ASYNC --
    at Page.<anonymous> (/home/site/wwwroot/node_modules/puppeteer/lib/helper.js:111:15)
    at Promise.all.endpoints.map.endpoint (/home/site/wwwroot/scripts/tests.js:162:19)
    at Array.map (<anonymous>)
    at Object.testStoreManagerLoad [as StoreManagerLoad] (/home/site/wwwroot/scripts/tests.js:161:15)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:189:7)"
const runTests = async (TestCases, customOpts = {}, log = console.log) => {
  const puppeteerOpts = {
    defaultViewport: {
      width: 1200,
      height: 850
    },
    args: ['--no-sandbox', '--disable-setuid-sandbox'],
    ...customOpts
  };
  const browser = await puppeteer.launch(puppeteerOpts);

  let page = await browser.newPage();

  page.setDefaultTimeout(0);
  
  const functionObj = {
    ClientContact: testClientContactForm,
    ClientSubmission: testClientSubmissionForm,
    TagRedemption: testTagRedemption,
    TagSubmission: testTagSubmissionForm,
    StoreManagerLoad: testStoreManagerLoad
  };

  for (const Case of TestCases) {
    try {
      log(`Started: ${Case.TestCaseName}`);
      await functionObj[Case.TestCaseType](Case, page);
      log(`Success: ${Case.TestCaseName}`);
      Case.Success = true;
    } catch (err) {
      log(`Failure: ${Case.TestCaseName}`);
      log(err.stack);
      Case.Success = false;
      Case.ErrorName = err.name;
      Case.ErrorMessage = err.message;
      Case.ErrorStack = err.stack;
    }

    if (!Case.Success) {
      if (Case.AlternateURL) {
        try {
          await functionObj[Case.TestCaseType](Case, page, true);
          log(`Alternate Success: ${Case.TestCaseName}`);
          Case.Success = true;
        } catch (altErr) {
          log(`Alternate Failure: ${Case.TestCaseName}`);
          log(altErr.stack);
          Case.ErrorName = altErr.name;
          Case.ErrorMessage = altErr.message;
          Case.ErrorStack = altErr.stack;
        }
      } else {
        page = await browser.newPage();
        try {
          await functionObj[Case.TestCaseType](Case, page);
          log(`Alternate Success: ${Case.TestCaseName}`);
          Case.Success = true;
        } catch (altErr) {
          log(`Alternate Failure: ${Case.TestCaseName}`);
          log(altErr.stack);
          Case.ErrorName = altErr.name;
          Case.ErrorMessage = altErr.message;
          Case.ErrorStack = altErr.stack;
        }
      }
    }
  }

  // Close the browser and exit the script
  await browser.close();

  return TestCases;
};

标签: javascripterror-handlingautomated-teststimeoutpuppeteer

解决方案


推荐阅读