javascript - 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;
};
解决方案
推荐阅读
- javascript - 使用javascript向表格添加按钮
- virtual-machine - Ubuntu 18.04.03 LTS - 由于 rMagick,捆绑安装引发错误
- ruby-on-rails - 设计 API 登录不适用于邮递员
- django - Django模型对象AJAX GET没有得到响应
- python - 关于 Legendre 多项式和 Gram 矩阵的 Python 项目的问题
- docker - Docker 容器被关闭
- ruby-on-rails - 如何删除 Resque ActiveJob 队列
- amazon-web-services - 如何将 AWS 漂移堆栈资源恢复到预期状态
- sql - 从预订表中获取进出日期
- r - 使用 R 和 ggplot 创建两行差异的 geom_bar