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

如何检测无响应服务器链接并继续校验其他链接?

问题:处理cy.request()网络错误并继续校验其他链接

请求链接 http://www.alitots.co.uk/ 时失败,报错信息如下:

请求无响应
我们尝试向该URL发送HTTP请求,但请求未得到响应。
网络层错误:Error: getaddrinfo ENOTFOUND www.alitots.co.uk
发送的请求信息:
方法:GET
URL:http://www.alitots.co.uk/

如何处理该错误并继续校验其他链接?以下是完整代码:

cy.get("a:not([href*='mailto:'])").each(($link, index) => {
  const href = $link.prop('href')
  cy.log(href)
  if (href) {
    cy.request({
      url: href, 
      failOnStatusCode: false,
      followRedirect: false,
      failOnNetworkError: false
    })
    .then((response) => {
      if(response.status >= 400 || response.status == '(failed)') {
        cy.log(` *** link ${index +1} is Broken Link ***`)
        //brokenLinks++
       } else {
        cy.log(` *** link ${index+1} is Active Link ***`) 
       }
     })
   }
})

解决方案

当前你设置了 failOnNetworkError: false,但cy.request()的网络错误会进入.catch()回调而非.then(),因此需要添加错误捕获逻辑,确保单个链接请求失败时不中断整个循环,继续处理下一个链接。

修改后的代码如下:

cy.get("a:not([href*='mailto:'])").each(($link, index) => {
  const href = $link.prop('href')
  cy.log(href)
  if (href) {
    cy.request({
      url: href, 
      failOnStatusCode: false,
      followRedirect: false,
      failOnNetworkError: false
    })
    .then((response) => {
      if(response.status >= 400 || response.status == '(failed)') {
        cy.log(` *** 链接 ${index +1} 是失效链接 ***`)
        // brokenLinks++
      } else {
        cy.log(` *** 链接 ${index+1} 是有效链接 ***`) 
      }
    })
    .catch((error) => {
      // 捕获DNS解析失败、无响应等网络错误
      cy.log(` *** 链接 ${index +1} 请求失败:${error.message} ***`)
      // 可根据需要统计失效链接
      // brokenLinks++
    })
  }
})

关键修改点:

  • 添加.catch()回调,专门处理cy.request()抛出的网络错误(如DNS解析失败、连接超时等)
  • 在错误回调中记录错误信息,同时不中断each()循环,确保后续链接继续被校验
  • 可选:将日志提示改为中文,更直观

这样即使某个链接出现ENOTFOUND这类网络错误,脚本也会捕获并记录,自动继续处理下一个链接,不会终止整个校验流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:22:17