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

Cypress使用cy.request如何从响应体提取PHP错误码与错误信息

解决方案

核心原因是你当前拿到的resp.body是PHP渲染的HTML错误页面,错误信息嵌在HTML标签/文本中,直接通过正则匹配固定特征即可提取目标字段。

实现代码示例

cy.request({
  url: "待测试URL",
  failOnStatusCode: false
}).then((resp) => {
  const rawContent = resp.body
  // 适配中英文冒号、前后空格、大小写的匹配规则
  const codeReg = /Code\s*[::]\s*(\d+)/i
  const messageReg = /Message\s*[::]\s*([^\n\r<]+)/i

  const codeResult = rawContent.match(codeReg)
  const messageResult = rawContent.match(messageReg)

  // 组装结果
  const testResult = {
    url: resp.url,
    httpStatusCode: resp.status,
    businessErrorCode: codeResult ? codeResult[1] : "无匹配业务错误码",
    businessErrorMsg: messageResult ? messageResult[1].trim() : "无匹配业务错误信息"
  }

  // 原有写入文件逻辑
  cy.writeFile("test-result.json", testResult, { flag: "a+" })
})

规则适配调整

如果实际返回的错误内容结构和默认规则不匹配,可以按以下方式调整:

  • 如果错误字段放在指定HTML标签中,比如<span class="err-code">500</span>,修改正则为/<span class="err-code">(\d+)<\/span>/i即可
  • 如果异常时PHP返回JSON格式响应,先判断响应头content-type为application/json后,直接取resp.body.Code和resp.body.Message即可
  • 如果返回内容包含HTML实体编码,先调用Cypress._.unescape(rawContent)解码后再做匹配

排查技巧

如果出现匹配不到的情况,先将完整的resp.body写入本地txt文件,查看实际返回的文本结构,针对性调整正则规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:27:02