在 Playwright (TS) 中,我想等待共享相同 url 和负载的所有 3 个响应的结束。 只有当所有 3 个答案都完成后,我才能进一步进行测试。 我已经尝试过,但它总是只等待第一个响应。
await Promise.all([
page.waitForResponse(resp => resp.url().includes('/variations')),
page.waitForResponse(resp => resp.url().includes('/variations')),
page.waitForResponse(resp => resp.url().includes('/variations')),
]);
它们都是同一个事件,当然你得到它们三次,而不是等待三个事件,而是等待同一个事件三次。
如果您不想连续等待 3 次,则需要针对这种情况创建特殊处理:
async function waitForMultipleResponses(page, urlPart: string, count: number) {
let responseCount = 0;
return new Promise<void>((resolve) => {
// Listen for responses
page.on('response', (response) => {
if (response.url().includes(urlPart)) {
responseCount++;
if (responseCount === count) {
resolve();
}
}
});
});
}
// Then use this function in your test
await waitForMultipleResponses(page, '/variations', 3);