我对 cypress 测试比较陌生.

我有一个表,其中包含多行特定文本,我只想获取第一行.

到目前为止,我想出的唯一方法是遍历表中的所有行以查找文本.这不仅是一种丑陋的测试,它还阻止了测试只对它找到的第一行起作用.

这是我的代码,有点笨拙:

const SELECTOR = {
    dataTableBody: '.p-datatable-tbody'
} as const;


cy.assertVisible(SELECTOR.dataTableBody);
cy.then(() => {
    cy.get(SELECTOR.dataTableBody).then($tbody => {
        cy.get(SELECTOR.dataTableBody).find('tr').each($row => {
            if (($row.find('td:nth-child(1)').text().trim()) === 'MyText') {

                    //I only want it to get here on the FIRST row that has 'MyText'
            }
        });
    });
});

谢谢!

推荐答案

我会用.contains(),因为你搜索了一些文本.

即使有许多匹配的元素,.contains()也始终返回101.

下面是一个简单的示例表

<table>
  <tbody class="p-datatable-tbody">
    <tr>                   
      <td></td>
      <td>MyText</td>      
    </tr>
    <tr>
      <td>MyText</td>
      <td></td>
    </tr>
  </tbody>
</table>

这是我能想到的最简单的命令序列

cy.get('.p-datatable-tbody').should('be.visible')
  .contains('tr', 'MyText')
  .then($row => {
    // $row is the first row that contains 'MyText' anywhere in the row

    expect($row.index()).to.eq(0)   // 1st row was picked
  })

但它返回‘MyText’为anywhere in the row.的行

如果只想选中第一列,请指定td:nth-child(1)

cy.get('.p-datatable-tbody').should('be.visible')
  .contains('td:nth-child(1)', 'MyText')
  .parent()
  .then($row => {
    // $row is the first row that contains 'MyText' in the first column

    expect($row.index()).to.eq(2)   // 2nd row was picked
  })

Typescript相关问答推荐

如何使用另一个类型的属性中的类型

有没有可能使用redux工具包的中间件同时监听状态的变化和操作

如何在单击停止录制按钮后停用摄像机?(使用React.js和Reaction-Media-Recorder)

类型脚本`Return;`vs`Return unfined;`

如何在typescript中设置对象分配时的键类型和值类型

PrimeNG日历需要找到覆盖默认Enter键行为的方法

如何在Angular 12中创建DisplayBlock组件?

跟踪深度路径时按条件提取嵌套类型

为什么上下文类型在`fn|curred(Fn)`的联合中不起作用?

如何在本地存储中声明该类型?

基于属性值的条件类型

在Vite中将SVG导入为ReactComponent-不明确的间接导出:ReactComponent

Vite+Chrome扩展 list v3-;不能在模块外使用import语句;对于inpage脚本

如何知道使用TypeScript时是否在临时工作流内运行

为什么TS条件返回要求不明确的强制转换而不是精确的强制转换?

定义一个只允许来自另一个类型的特定字符串文字的类型的最佳方式

如何将元素推入对象中的类型化数组

将对象数组传递给 Typescript 中的导入函数

包含多个不同类构造函数的接口的正确类型?

错误:仅允许在‘使用服务器’文件中导出异步函数