目标: 我正在编写一个 Puppeteer 测试,它需要监听某个响应,检查响应 url 是否具有某种格式,然后保存响应,以便以后可以使用正文中的值。
当前代码:
假设我们有一个 const teacherId
。现在我的代码如下所示:
await page.goto(`url/teacher-profile/${teacherId}`);
// eslint-disable-next-line jest/valid-expect-in-promise
const teacherPromise = page
.waitForResponse(
response =>
response.url().includes(`/teacher-profile/teachers/${teacherId}`) &&
response.status() === 200,
)
.then(res => res.json());
const teacher = await teacherPromise;
问题: 这很好用......在找到第一个http响应时。但我知道我正在寻找的 http 响应需要更长的时间。当我手动加载页面时,它始终是网络选项卡中的第 4-6 个响应。
我尝试过的:
我尝试过更改teacherPromise
to 调用page.on('request', ...)
,但它仍然只捕获了第一个请求。我曾短暂考虑过将 Promise 放在 for 循环中,但这似乎很混乱。
任何建议表示赞赏!