为何用Cypress检查禁用输入框时text为空、value正常?
问题原因解析:禁用输入框text为空但value正常的现象
这确实是HTML本身的特性,和Cypress无关,核心原因在于HTML输入框的文本内容和value属性是完全独立的两个概念:
- 对于
<input>这类自闭合HTML元素来说,它本身没有内部文本节点,不管输入框是否禁用,用have.text断言(本质是获取元素的文本内容)得到的结果都是空字符串''。这是HTML的原生规则,和输入框的状态无关。 value是<input>元素的专属属性(同时也是DOM对象的属性),专门用来存储输入框的当前内容。即使输入框被禁用,这个值也会被保留,所以用cy.get('input').should('have.value', 'Some Text')能正常匹配到预期内容。
简单说:禁用状态只是限制用户修改输入框内容,但不会影响value属性的存储;而输入框从一开始就没有可读取的内部文本,自然用have.text拿不到内容。
内容的提问来源于stack exchange,提问作者msmith1114
相关产品推荐
相关产品推荐

