柏树| 如何统计表中非空行的数量?

0 row count emptydatatext cypress

请帮助我找到一种方法来仅计算非空表行。我尝试使用它:

cy.get("#TableId")
    .find("tr")
    .then((rows) => {
        rows.toArray().forEach((element) => {
        if (element.innerHTML.should('be.not.empty')) {
        //rows.index(element) will give you the row index
           cy.log(rows.index(element));
        }
       });
     });
Run Code Online (Sandbox Code Playgroud)

但它会抛出一个错误

use*_*029 6

这取决于您的目标。

这里有一个使用多种表达方式的实验,您可以选择适合您要求的一种。

不要忘记添加tbody到表选择器,因为您想要排除标题行。

测试 HTML

<table>
  <tbody>
    <tr>
      <td></td>
      <td></td>
    </tr>
    <tr>
      <td><span></span></td>
      <td></td>
    </tr>
    <tr>
      <td>some-text</td>
      <td></td>
    </tr>
    <tr>
      <td>some-text</td>
      <td>another-text</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

测试代码

cy.get('table tbody tr')
  .each((tr, index) => {

    console.group('row', index, tr.html().replaceAll('\n', ''))

    const expressions = [
      "tr.html()", 
      "tr[0].innerHTML", 
      "tr.find('td').toArray().map(td => td.innerHTML).join('')",
      "tr.text()",
      "tr.text().trim().replaceAll('\\n', '')",
    ]
    const results = expressions.reduce((acc,e) => {
      acc[e] = eval(e)
      return acc
    }, {})
    console.table(results)
    console.groupEnd()
  })
Run Code Online (Sandbox Code Playgroud)

输出

在此输入图像描述