Soy un nuevo desarrollador y estoy tratando de construir una determinada prueba usando ciprés. el cliente tiene una cuadrícula dinámica y me gustaría ver qué fila de la cuadrícula contiene los datos que quiero. No puedo cambiar el archivo HTML.
En este momento estoy tratando de iterar sobre todas las filas usando el comando each() cypress. Así que tengo dos preguntas:
¡Gracias!
Usar cada uno es un enfoque bastante bueno, seleccione las filas y use el parámetro de índice para encontrar cuál.
cy.get('[role="row"]').each(($row, index) => { if ($row.find('span').text() === 'aaaa') { cy.wrap(index).as('rowIndex') }) cy.get('@rowIndex') .then(rowIndex => { // use the row index here })También existe este método, Cypress obtiene el índice del elemento para usarlo más tarde .
Si funciona (los documentos de jQuery no muestran este uso), el código para su HTML sería
cy.contains('[role="row"]', 'aaaa').invoke('index').as('rowIndex') cy.get('@rowIndex') .then(rowIndex => { // use the row index here })Tengo una prueba haciendo lo mismo y la forma en que lo abordé fue:
cy.contains('aaaa').invoke("text").as('variableName')Esto ahora se puede usar así:
cy.get(this.variableName).should('be.visible') cy.contains('aaaa').parent().next().children() //Used to iterate through rows.Hay varios enfoques que puede tomar, pero creo que mi preferido es almacenar la variable en la variable de entorno Cypress. A continuación, obtengo el elemento, luego uso una .then() para obtener el texto del elemento (con la función JQuery, .text() ), y lo almaceno en una variable de entorno de Cypress (a través Cypress.env() ).
describe('tests', () => { it('test', () => { cy.get('some-element').then(($el) => { Cypress.env('myVar', $el.text()); }) ... // some code // When needing the variable, reference it by Cypress.env('myVar'); }); afterEach(() => { // after each test, clear the variable Cypress.env('myVar', null) }); });