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

Cypress If语句始终不生效,判断formcontrolname属性字段失败如何解决

问题解决方法

1. 当前代码逻辑错误原因

你调用.text()方法获取的是<textarea>标签包裹的内部文本内容,从提供的HTML结构可以看到,该textarea标签内部没有任何文本内容,自然永远无法匹配到productName字符串,所以始终走入else分支。
如果要获取元素的formcontrolname属性值做判断,需要用jQuery的.attr()方法,正确写法如下:

cy.get('[formcontrolname="productName"]').then(($productName) => {
  if ($productName.attr('formcontrolname') === 'productName') {
    cy.log('已找到对应产品名字段');
  } else {
    cy.log('未找到对应产品名字段');
  }
});

2. 判断字段只读/禁用状态的正确写法

你最初的需求是校验字段是否为只读状态,不需要手动编写if判断,直接使用Cypress内置断言即可,写法更简单也更符合Cypress最佳实践:

  • 校验Angular组件禁用状态(对应你HTML中ng-reflect-enabled=""的特征):
cy.get('[formcontrolname="productName"]').should('be.disabled')
  • 校验原生只读属性:
cy.get('[formcontrolname="productName"]').should('have.attr', 'readonly')

如果确实需要手动编写逻辑分支判断,可以用如下写法:

cy.get('[formcontrolname="productName"]').then(($productName) => {
  // 判断是否为禁用状态
  if ($productName.is(':disabled')) {
    cy.log('字段为禁用/只读状态');
  } else {
    cy.log('字段可编辑');
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:09:01