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

如何在Cypress中匹配并拦截多个API请求路径?

Cypress拦截多个同类POST请求的解决方案

你的代码问题出在正则表达式的写法上,具体错误点和修正方案如下:

原代码的问题

  1. 你把正则表达式写成了带/的字符串形式,但Cypress的cy.intercept需要的是正则表达式对象,而非包裹在字符串里的/.../格式。
  2. 正则里的[]是字符集语法,会把/Inventory/AddCar拆成单个字符来匹配,而非完整的路径片段,完全达不到预期的拦截效果。

修正方案

方案1:使用正确的正则表达式对象

用分组语法匹配三个接口的共同前缀和不同后缀,确保精准匹配:

function saveVehicle() {
  // 匹配 /Inventory/AddCar、/Inventory/AddTruck、/Inventory/AddBike 这三个POST请求
  const regex = /^\/Inventory\/Add(Car|Truck|Bike)$/;
  cy.intercept("POST", regex).as("saveVehicle");
  saveButton.click().wait("@saveVehicle");
}
  • ^ 和 $ 确保路径完全匹配,避免误拦截其他类似路径
  • (Car|Truck|Bike) 是分组匹配,会命中三个后缀中的任意一个

方案2:直接传入路径数组(更直观)

Cypress的cy.intercept支持直接传入路径数组,这种方式比正则更易懂,不容易出错:

function saveVehicle() {
  const targetPaths = [
    "/Inventory/AddCar",
    "/Inventory/AddTruck",
    "/Inventory/AddBike"
  ];
  cy.intercept("POST", targetPaths).as("saveVehicle");
  saveButton.click().wait("@saveVehicle");
}

如果你的场景中可能触发多个请求,只需把wait改成数组形式即可:

saveButton.click().wait(["@saveVehicle"]);

内容的提问来源于stack exchange,提问作者MasterJoe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:15:10