Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

169
Visualizações
Usando Cypress y/o mocha (o mocha-chai) para verificar que no contenga una palabra pero NO una subcadena

Estoy tratando de usar Cypress (que contiene mocha , además estoy usando mocha-chai ) para verificar una serie de palabras que NO están incluidas en una frase. Esto se debe a que, por ejemplo, tengo tres <div> y quiero comprobar

  • que las palabras en div1 están presentes en div1 pero no en div2 y div3;
  • que las palabras en div2 están presentes en div2 pero no en div1 y div3;
  • que las palabras en div3 están presentes en div3 pero no en div1 y div2.

Para hacer eso, estoy usando .contain y .not.contain pero desafortunadamente encuentran algunas subcadenas:

si tengo

 // div1 <div> ... The perfect professionist for you </div> // div2 <div> ... Good professionists are ready here </div>

hago

 expect(div1).to.contain('professionist') // true expext(div1).to.not.contain('professionists') // true

esto esta bien, pero

 expect(div2).to.contain('professionists') // true expect(div2).to.not.contain('professionist') // false!

fallará.

¿Hay alguna manera de usar cypress, mocha o algo similar para verificar la palabra completa pero no la subcadena?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puedes usar una expresión regular para hacer eso. Para la afirmación, debe usar match() .

 var regexValue = "(?<!\S)word(?!\S)" var actualRegexValue = new RegExp(regexValue.replace("word", "professionist")) cy.get('div2').invoke('text').then((text) => { expect(text).to.match(actualRegexValue) })

Su expresión regular /(?<!\S)professionist(?!\S)/ solo buscará la cadena professionist en la oración y nada más, ni siquiera professionists .

about 4 years ago · Juan Pablo Isaza Relatório

0

Límite de palabra: \b

Más general es el límite de palabra regex

 cy.get('div').eq(1).invoke('text') .then(div2Text => expect(div2Text).to.not.match(/\bprofessionist\b/)) // passes

o pasar la palabra a la expresión regular (la nota requiere \\b para una traducción adecuada)

 const word = 'professionist' const regex = new RegExp(`\\b${word}\\b`) cy.get('div').eq(1).invoke('text') .then(div2Text => expect(div2Text).to.not.match(regex)) // passes cy.get('div').eq(1).invoke('text') .should('not.match', regex) // passes

tu cubo de pasta

 /// <reference types="cypress" /> before(() => {}) beforeEach(() => { cy.viewport(2048, 1080) }) describe('Test', () => { it('simple test', () => { let div = document.createElement('div') let content = document.createTextNode('Good professionists are ready here') div.appendChild(content) try { let word = 'professionist' let regex = new RegExp(`\\b${word}\\b`) expect(div.innerText).not.to.match(regex) // passes word = 'professionists' regex = new RegExp(`\\b${word}\\b`) expect(div.innerText).to.match(regex) // passes } catch (error) { Cypress.log(error) } }) })

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda