Sou relativamente novo nos testes Cypress.
Tenho uma tabela que possui mais de uma linha com um texto específico e quero obter apenas a primeira linha.
Até agora, a única maneira que descobri de fazer isso é percorrer todas as linhas da tabela em busca do texto. Isso não é apenas feio, mas também impede que o teste atue apenas na primeira linha que encontrar.
Aqui está meu código meio desajeitado:
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'
}
});
});
});
Obrigado!
Eu usaria
.contains()
já que você procura algum texto..contains()
sempre retorna apenas o primeiro elemento, mesmo se houver muitos elementos correspondentes.Aqui está uma tabela de exemplo simples
Esta é a sequência de comandos mais simples que posso imaginar
Mas ele retorna a linha que contém 'MyText' em qualquer lugar da linha.
Se você quiser verificar apenas a primeira coluna, especifique
td:nth-child(1)