Quiero hacer una prueba (ciprés) para recorrer las entradas y escribir valores en cada campo de entrada, pero recibí un error. ¿Alguien puede ayudarme en eso? Vaya, parece que está intentando llamar a un comando secundario antes de ejecutar un comando principal.
<div class="content__form"> <div class="formcolcontainer"> <div class="formcol"> <div class="formrow"> <input type="text" id="fname" class="forminput"> <label for="fname" class="formlabel"> FName</label> </div> <div class="formrow"> <input type="text" id="lname" class="forminput"> <label for="lname" class="formlabel"> LName </label> </div> </div> </div> submitFormData(fname, lname){ const inputFields = { Fname: fname, Lname: lname, } cy.get('.formrow') .find('input') .then(input =>{ cy.wrap(input).each((field, value) =>{ cy.find(inputFields[`#${field}`]).type(inputFields[`${value}`]) }) }) }Algo como esto podría funcionar, use directamente el texto <label> para obtener su valor para ingresar
//earlier const fname = 'John' const lname = 'Jones' const inputFields = { Fname: fname, Lname: lname, } cy.get('.formrow') .find('input') .each(($input, index) => { cy.wrap($input).sibling('label').invoke('text').then(label => const value = inputFields[label.trim()]; cy.wrap($input).type(value); }) })El mensaje de error significa
cy.find(inputFields[`#${field}`]) es incorrecto porque .find() no se puede usar como primer comando en la cadena.
En su lugar, usarías
cy.get(inputFields[`#${field}`])También el selector para obtener la identificación sería diferente
cy.get(`#${inputFields[field]`)Puedes hacer algo como esto directamente. Puede crear una matriz con nombre y apellido y usarlos directamente en el type usando sus posiciones de índice.
let inputFields = ['fname', 'lname'] cy.get('.formrow').find('input').each(($ele, index) => { cy.wrap($ele).type(inputFields[index]) })