为什么我必须修剪元素文本来检查它是否为空?

Thé*_*aux 6 javascript testing cypress

我的问题相当简单,但我还没有找到任何与之对应的答案,如何断言 Cypress 元素为空?我只是想确保该元素不包含文本。

我最初的尝试是

cy.find('.someElement').should('have.text', '');
Run Code Online (Sandbox Code Playgroud)

但即使我的 div 在 DOM 中为空,我也遇到了这个错误

expected '<div.someElement>' to have text '', but the text was '\n \n \n      '
Run Code Online (Sandbox Code Playgroud)

我让它工作使用

 cy.find('.someElement')
    .should(($el) => {
      expect($el.text().trim()).equal('');
    });
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么我必须修剪元素的文本。

Jam*_*mes 4

有些元素包含空格,有些则不包含。如果元素定义中有换行符,则它包含空格。

<div class='this_element_contains_whitespace'>
  <span></span>
</div>

<div class='this_element_doesnt'><span></span></div>
Run Code Online (Sandbox Code Playgroud)

trim()用于允许第一个元素通过测试。