Playwright JavaScript:如何等待具有特定请求负载的网络请求?

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

如果请求具有唯一的端点,那么等待请求就很容易。 但是,如果所有端点都相同,但请求负载不同,例如 GraqhQL 中间层,我们如何等待特定请求。 在这种情况下,所有后端调用都是使用

https://myapplication.com/graphql-v2
完成的,但请求负载不同。 我想拦截此请求,其中有效负载包含字符串
getUserDetails

类似的东西,但更好:

const response = await page.waitForResponse(
      (request) => request.url().includes('/graphql-v2') && request.body().includes('getUserDetails')
)

javascript testing automation cypress playwright
1个回答
0
投票

请参阅此答案的底部。您可以从回调中返回一个承诺而不是布尔值到

waitForResponse
,在这种情况下,Puppeteer 将等待它并使用其解析值作为接受/拒绝条件。

对于您的用例,它可能看起来像:

const response = await page.waitForResponse(request =>
  request.url().includes('/graphql-v2') &&
  request.json().then(data => /\bgetUserDetails\b/.test(data.query))
);

如果这不起作用,该网站的最小可重现示例将很有用,以便我可以验证代码。

© www.soinside.com 2019 - 2024. All rights reserved.