如何避免Playwright测试30秒超时并设置15分钟等待时长?
解决Playwright长时间等待触发测试超时的问题
你的问题核心是Playwright默认的测试超时时间(30秒)远短于你要等待的15分钟,导致测试还没完成等待就先超时了,和page.waitForTimeout()本身无关。下面是具体解决方法:
1. 给单个测试单独设置超时
如果只是个别测试需要长时间等待,直接在测试用例里调整超时时间,留一点冗余避免刚好卡时间:
test('需要长时间等待的测试', async ({ page }) => { // 设置测试超时为15分10秒(比等待时间多10秒) test.setTimeout(910000); // 等待15分钟 await page.waitForTimeout(900000); // 后续业务操作 });
其他语言对应调整:
- Python:
test.set_timeout(910000) - Java:
test.setTimeout(910000);
2. 全局修改测试超时(不推荐)
如果所有测试都需要长超时,可在配置文件里调整全局超时:
// playwright.config.js module.exports = { testDir: './tests', // 全局设置每个测试的超时时间为15分10秒 timeout: 910000, // 其他配置项... };
3. 优先用智能等待替代固定时长
实际测试中尽量避免固定长时间等待,这种方式既低效又不可靠。建议换成等待特定条件:
- 等待元素出现:
await page.waitForSelector('#target-element', { timeout: 900000 }); - 等待响应:
await page.waitForResponse(resp => resp.url().includes('api/finish') && resp.ok(), { timeout: 900000 });
只有在必须等待固定时长的场景(比如定时任务触发),再用page.waitForTimeout()。
内容的提问来源于stack exchange,提问作者Enigmatrix
相关产品推荐
相关产品推荐

