You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress测试拦截请求异常:目标请求被后续请求覆盖问题

解决方法:精准捕获第二个请求

当页面触发多个同URL、同方法的请求时,默认的cy.wait("@apiRequest")只会捕获第一个匹配请求。要获取第二个请求,可以通过以下两种方式实现:

方法1:多次调用cy.wait()

连续调用cy.wait("@apiRequest"),第一次跳过第一个请求,第二次即可捕获目标请求:

it("Deve interceptar a requisição e verificar se ela é válida quando clicar no select do gráfico Percentual de municípios por faixa de matrículas em tempo integral e inse", () => {
  cy.wait(1000);
  cy.intercept({
    method: "GET",
    url: `${apiUrl}/api/distribuicao-municipio-faixa-matricula/?ano=2022`,
  }).as("apiRequest");

  cy.get('[data-testid="selectPrincipalGraficos"]').click();
  cy.get("ul.p-dropdown-items")
    .should("be.visible")
    .contains(
      "Percentual de municípios por faixa de matrículas em tempo integral e inse"
    )
    .should("be.visible")
    .click();

  // 跳过第一个请求
  cy.wait("@apiRequest");
  // 捕获第二个请求并验证
  cy.wait("@apiRequest").then((interception) => {
    if (interception.response) {
      expect(interception.response.statusCode).to.eq(200);
    }
  });
});

方法2:用计数器标记目标请求

通过拦截器内的计数器,仅为第二个请求设置别名,直接等待目标请求:

it("Deve interceptar a requisição e verificar se ela é válida quando clicar no select do gráfico Percentual de municípios por faixa de matrículas em tempo integral e inse", () => {
  cy.wait(1000);
  let requestCount = 0;
  cy.intercept({
    method: "GET",
    url: `${apiUrl}/api/distribuicao-municipio-faixa-matricula/?ano=2022`,
  }, (req) => {
    requestCount++;
    // 仅为第二个请求设置别名
    if (requestCount === 2) {
      req.alias = "secondApiRequest";
    }
    req.continue();
  });

  cy.get('[data-testid="selectPrincipalGraficos"]').click();
  cy.get("ul.p-dropdown-items")
    .should("be.visible")
    .contains(
      "Percentual de municípios por faixa de matrículas em tempo integral e inse"
    )
    .should("be.visible")
    .click();

  // 等待标记的第二个请求
  cy.wait("@secondApiRequest").then((interception) => {
    if (interception.response) {
      expect(interception.response.statusCode).to.eq(200);
    }
  });
});

额外建议

尽量替换cy.wait(1000)这类固定延迟,改用基于元素加载或初始请求完成的等待逻辑,能大幅提升测试稳定性。

内容的提问来源于stack exchange,提问作者Mikael C. Barros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 16:07:34