Как я могу щелкнуть дочерний элемент в выбранном элементе в cypress?

#cypress

#cypress

Вопрос:

У меня есть таблица со строками (список). Я получаю элемент с помощью get и нажимаю на него.
HTML:

 <table>
    <tbody>
        <tr>...</tr>
        <tr>...</tr>
        <tr>...</tr>
        <tr data-row-key="5fc63ee4502a5d60c8fc9550">
            <td>43</td>
            <td>testName12</td>
            <td>
                <div>
                    <button type="button">
                    <i aria-label="icon: edit" class="anticon-edit"></i>
                    </button>
                    <button type="button">
                    <i aria-label="icon: delete" class="anticon-delete"></i>
                    </button>
                </div>
            </td>
        </tr>
    </tbody>
</table>
 

Эта строка выбрана для меня, все в порядке:

 cy.get("tr:contains('testName12')", { timeout:20000}).click({force: true}) 
 

Но в этом элементе у меня есть те же дочерние элементы («кнопка»), и мне нужно щелкнуть по одному из них:

 cy.get("tr:contains('testName12')", { timeout:20000}).children('.anticon-delete').click({force: true})
 

Я получаю сообщение об ошибке:

 Timed out retrying: Expected to find element: .anticon-delete, but never found it. Queried from element: <tr.ant-table-row.ant-table-row-level-0>
 

Как я могу щелкнуть дочерний элемент в выбранном элементе?

Ответ №1:

Одной из альтернатив было бы использовать find()

 cy.get("tr:contains('testName12')", { timeout:20000}).find('.anticon-delete').click({force: true})
 

Ответ №2:

Следуя вашему подходу, я бы предложил следующие изменения с использованием родителей

 cy.contains('td', 'testName12')
    .parents('tr')
    .children('.anticon-delete')
    .click({force: true})
 

Редактировать: если родительский подход не работает, я бы попробовал использовать внутри

 cy.get("tr:contains('testName12')", { timeout:20000})
    .within(()=>{
        cy.get('.anticon-delete').click({force: true})
    })
 

Комментарии:

1. Ошибка: время ожидания истекло при повторной попытке: ожидалось найти элемент: .anticon-delete, но так и не нашел его. Запрос из элемента: <tr.ant-table-row.ant-table-row-level-0> в .children(‘.anticon-delete’)