Estoy tratando de agregar los títulos de un encabezado iframe en una matriz para luego imprimir la matriz con su elemento en la consola. Los elementos se agregan bien, el problema es que la consola muestra "Array[9]" en lugar de "[Home, Courses, ...]". ¿Hay alguna forma de mostrar los elementos en lugar del objeto? Este es el código:
it("Get the elements from the header of the iframe and add them to an array", () => { cy.visit("https://www.rahulshettyacademy.com/AutomationPractice/") let headerArray = [] cy.frameLoaded("#courses-iframe") cy.iframe("#courses-iframe").find(".nav-outer > .main-menu > .navbar-collapse > ul > li").each(($row, index, $rows) => { headerArray.push($row.text()) }) cy.log(headerArray) })
Y esta es la respuesta de la consola:
cy.log()
no es excelente para fines de depuración, la forma general de los mensajes es name
(columna izquierda) y description
(columna derecha). Cualquier cosa anidada se abrevia.
Intenta encadenar
cy.log(JSON.stringify(headerArray))
o unirse
cy.log(headerArray.join(', '))
o si solo quieres depurar, usa la consola
console.log(headerArray)
La otra razón por la que cy.log()
no es bueno para esto, el código que se muestra registrará una matriz vacía.
El cy.log()
toma el valor de headerArray
antes de que se ejecuten los comandos, por lo que debe usar un .then()
const headerArray = [] cy.iframe("#courses-iframe").find(".nav-outer > .main-menu > .navbar-collapse > ul > li") .each(($row, index, $rows) => { headerArray.push($row.text()) }) .then(() => { cy.log(headerArray) })
Gracias por tu respuesta. También se me ocurrió la idea de usar .toString(). De esa manera, puedo mostrar los contenidos de la misma manera que lo hago con Join. Aún así, join es mejor porque separa todo el contenido de la matriz con coma correctamente, mientras que toString no hace eso.