waitForResponse - 等待所有 3 个(相同 url)响应

问题描述 投票:0回答:1

在 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')),
]);
typescript playwright playwright-typescript
1个回答
0
投票

它们都是同一个事件,当然你得到它们三次,而不是等待三个事件,而是等待同一个事件三次。

如果您不想连续等待 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);
© www.soinside.com 2019 - 2024. All rights reserved.