Cypress 获取包含具有给定数据属性的元素的索引行

Inê*_*mes 2 indexing get row cypress

我有一张垫子桌

  <mat-row>
        <mat-cell>Firstname</mat-cell>
        <mat-cell>Lastname</mat-cell> 
        <mat-cell>Age</mat-cell>
      </mat-row>
      <mat-row>
        <mat-cell>Jill</mat-cell>
        <mat-cell>Smith</mat-cell> 
        <mat-cell> <mat-icon data-mat-icon-name="pinned"> </mat-cell>
      </mat-row>
Run Code Online (Sandbox Code Playgroud)

我需要知道具有的元素的行索引data-mat-icon-name='pinned'

我尝试了下面的代码:

   cy.get("mat-table").find("[data-mat-icon-name='pinned']").invoke("index").then((i) => {
      cy.log(i); // prints 0. Should print 1
    });
Run Code Online (Sandbox Code Playgroud)

但给我索引 0。应该给我索引 1。

那么也许只是给出单元格的一些索引而不是行的索引?

知道如何获取行索引吗?

做。我需要使用 cy.parent 吗?

编辑:

如果我做cy.get("mat-table").find("[data-mat-icon-name='pinned']").should("exist");

元素存在于Dom中

小智 7

来自 jQuery 文档.index()

如果没有参数传递给 .index() 方法,则返回值是一个整数,指示 jQuery 对象中第一个元素相对于其同级元素的位置。

<mat-icon>你发现的东西本身就在细胞里。

您需要导航到父行并找到它在同级行中的索引,

cy.get('mat-table')
  .find('[data-mat-icon-name=pinned]')
  .parents('mat-row')
  .invoke('index')
  .then((i) => {
    cy.log(i); // prints 1
  });
Run Code Online (Sandbox Code Playgroud)