Meu script se parece com o abaixo
const item ["a1", "a2",..............,"a45"]
const regex = new RegExp(`${item .join('|')}`, 'g')
if(cy.get('body').contains(regex)){
cy.get('body').then(($el) => {
if ($el.find('.button').length > 0) {
cy.get('.button2').then(($btn) => {
var infoo = $btn.text()
cy.writeFile('cypress/fixtures/test.txt', '\n', { flag: 'a+' })
cy.writeFile('cypress/fixtures/test.txt', infoo+' | ', { flag: 'a+' })
})
}
})
} // If
else {
cy.get('.button2')..click()
}
Quando uma das palavras está visível na minha página, meu script roda bem. Se não, ele trava e o script para (por causa desta parte if(cy.get('body').contains(regex)){ ).
Eu tento isso, mas demora muito mais para executar porque a parte abaixo está em outro loop for
const item ["a1", "a2",..............,"a45"]
const regex = new RegExp(`${item .join('|')}`, 'g')
for(let p = 1 ; p <= 45; p++) {
cy.get('body').then(($btn) => {
if($btn.text().includes(items[p - 1])){
cy.get('body').then(($el) => {
if ($el.find('.button').length > 0) {
cy.get('.button2').then(($btn) => {
var infoo = $btn.text()
cy.writeFile('cypress/fixtures/test.txt', '\n', { flag: 'a+' })
cy.writeFile('cypress/fixtures/test.txt', infoo+' | ', { flag: 'a+' })
})
}
})
} // If
})
Quando uso includes com regex também recebo este erro "O primeiro argumento para String.prototype.includes não deve ser uma expressão regular"
Quero economizar tempo e verificar apenas se um item aparece na minha página.
O erro diz
o que significa que você precisa alterar o argumento para uma string (mas isso anula seu propósito) ou alterar para um método que possa aceitar uma expressão regular, por exemplo
match()
ou.test()
.Por exemplo
Esta pergunta Como usar String.match() em javascript dá alguns exemplos de como usar
.match()
em javascript.