#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>
И мне нужно знать индекс строки элемента, который имеет 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
});
Но дает мне индекс 0. Следует дать индекс 1.
Так, может быть, это просто указание некоторого индекса ячейки, а не строки?
Есть идеи, как я могу получить индекс строки?
Делать. Мне нужно использовать cy.parent ?
Редактировать:
Если я это сделаю cy.get("mat-table").find("[data-mat-icon-name='pinned']").should("exist");
Элемент выходит в Dom
Комментарии:
1. Что делать, если вы используете
mat-row
вместоmat-table
этого свой локатор ?2. @АлапанДас. Я не знаю, в каком ряду … Я хочу найти элемент, а затем найти строку, содержащую этот элемент
Ответ №1:
Из jQuery docs .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
});