Estoy tratando de obtener información de contacto a través de Cypress y compararla con la base de datos. Así que necesito dividir los detalles y obtener Título, Nombre, Apellido, País... etc.
Pero el texto se contiene en un solo div y se ha separado usando la etiqueta <br> .
Luego he intentado obtener el texto de la siguiente manera:
cy.xpath('element xpath').invoke('text').then((AddressLineText) => { cy.log(AddressLineText); });Fluir es el texto invocado y se ha conectado los textos de línea sin siquiera un espacio. Debido a eso, no puedo dividir por espacio o /n.
A continuación se muestra la estructura HTML:
<div class="address"> Mr. Test User <br> Testing Services Ltd <br> Britannia House <br> Rushmills <br> NN4 7YB, Northampton <br> Northamptonshire <br> United Kingdom </div>Cómo aislar cada línea según este escenario.
Las etiquetas <br> se convierten en líneas nuevas después de la extracción de texto
cy.get('.address') .invoke('text') .then(text => text.split('\n')) // split by newline .then(texts => texts.map(text => text.trim())) // trim whitespace .then(texts => texts.filter(text => text)) // remove empty .then(texts => { console.log(texts) }) })huellas dactilares
["Mr. Test User", "Testing Services Ltd", "Britannia House", "Rushmills", "NN4 7YB, Northampton", "Northamptonshire", "United Kingdom"]Nodo.TEXT_NODE
Es mejor extraer los nodos de texto del div si el contenido es más complicado.
.childNodes para obtener todos los <br> y textos dentro de la dirección <div><br> cy.get('.address') .then($el => $el[0].childNodes) .then(children => [...children].filter(child => child.nodeType === Node.TEXT_NODE)) .then(textNodes => textNodes.map(textNode => textNode.nodeValue.trim())) .then(texts => { console.log(texts) })huellas dactilares
["Mr. Test User", "Testing Services Ltd", "Britannia House", "Rushmills", "NN4 7YB, Northampton", "Northamptonshire", "United Kingdom"]Puede usar each() para imprimir todos sus textos individuales. Una línea para cada texto en los registros del corredor de prueba.
cy.xpath('element xpath').each(($ele) => { cy.log($ele.text()); });